我想对某些异常使用更详细的日志记录模式,但不是为了所有内容,因为我不希望在可以避免的情况下达到性能。
有没有办法定义记录器,使其只适用于特定的异常?
(我正在使用xml配置,因此如果可能,首选该格式的示例)
答案 0 :(得分:2)
您可以像这样设置记录器的级别:
<logger name="package.name" level="INFO"/>
其中package.name是特定包的名称。
您可以指定不同的appender(基本上是日志记录配置),如下所示:
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>myApp.log</file>
<encoder>
<pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
</encoder>
</appender>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>
这里,文件1将日志信息打印到文件,STDOUT appender将日志信息打印到控制台,FileAppender和ConsoleAppender类可以看到。
现在,结合我上面给出的例子可以得出结论:
<logger name="package.name">
<appender-ref ref="STDOUT" />
</logger>
这允许您为特定包定义不同的日志记录。因此,如果您想要在同一个包中添加额外的日志记录,那么这应该可以胜任。
答案 1 :(得分:1)
在PatternLayout中处理异常的转换字support for filtering exceptions。过滤异常是通过evaluators完成的。在我看来,你需要的支持已经存在。