我正在使用 logback 进行日志记录,在 logback.xml 中我有 控制台附加器作为
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>.
我正在努力实现这样的目标......
time thread |-**CUSTOMLOGLEVEL** xyz.class - Message.
Why ? i want to filter the messages easily by defining the loglevel or some other indicator.
例如:搜索日志级别为“CUSTOMLOGLEVEL”的日志。 有什么方法可以提供自定义日志级别或任何其他指示器,表明这是自定义生成的日志而不是某些框架生成的日志..
我进入了创建自定义类的方向。
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="com.logging.CustomLayout">
<param name="argument1" value="1" />
<param name="argument2" value="2" />
</layout>
</encoder>
</appender>
但我不确定如何从外部为这些参数提供输入。
如果我不清楚,请告诉我。
最佳答案
SLF4J/Logback 通过一个叫做标记的特性解决了“我想做一些比日志级别更复杂的事情”的问题。
例如,将一些日志标记为“有趣”:
Marker interesting = MarkerFactory.getMarker("INTERESTING");
Logger logger = LoggerFactory.getLogger(getClass());
…
logger.info(interesting, "Something happened: {}", value)
在 PatternLayout 中,可以使用 %marker
来记录与日志条目关联的标记。 (参见 %marker in the documentation。)
这类似于 a SLF4J FAQ entry 中的内容为什么他们没有“致命”级别以及如何使用标记。
另一种选择(因为您专门询问过滤以查看它是否是“自定义生成的日志而不是某些框架生成的日志”)是确保您的自定义日志都在一个名为您想要的记录器中(也许从 com.yourcompany.custom.
) 开始,只使用普通的记录器过滤。虽然让记录器以它们所在的类命名通常非常方便,但有时对不同的记录器使用不同的名称更准确地表示您尝试记录的内容,并且还允许轻松过滤和搜索。
关于java - Logback - 布局模式中的自定义级别输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37694548/