2

我想对某些异常使用更详细的日志记录模式,但不是针对所有异常,因为我不希望在可以避免的地方影响性能。

有没有办法定义一个记录器,使它只适用于特定的异常?

(我正在使用 xml 配置,所以如果可能的话,这种格式的示例将是首选)

4

2 回答 2

2

您可以像这样设置记录器的级别:

 <logger name="package.name" level="INFO"/>

其中 package.name 是特定包的名称。

您可以像这样指定不同的附加程序(基本上是日志记录配置):

<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>

在这里,文件一将日志信息打印到文件,STDOUT 附加程序将日志信息打印到控制台,如 FileAppender 和 ConsoleAppender 类所示。

现在,结合我上面给出的示例可以得出以下结论:

 <logger name="package.name">
   <appender-ref ref="STDOUT" />
 </logger>

这允许您为特定包定义不同的日志记录。因此,如果您有所有想要在同一个包中添加额外日志记录的异常,那么这应该可以完成工作。

于 2013-05-30T09:26:46.530 回答
1

处理异常的转换词已经支持在 PatternLayout 中过滤异常。过滤异常是通过evaluators完成的。在我看来,您需要的支持已经存在。

于 2013-05-30T13:18:24.597 回答