如何使用springboot和logback按严重性将日志记录分为不同的文件

时间:2019-04-03 14:42:09

标签: java spring spring-boot logback

我正在尝试使用logback将不同的日志发送到不同的文件。

我配置了2个附加程序(控制台,RollingFile),我想要全部

  • INFO消息->控制台附加程序
  • TRACE消息-> RollingFile附加器:

logback-spring.xml

<root level="error">
    <appender-ref ref="RollingFile" />
    <appender-ref ref="Console" />
</root>

<logger name="com.mypkg" level="trace" additivity="true">
    <appender-ref ref="RollingFile" />
</logger>

<logger name="com.mypkg" level="info" additivity="true">
    <appender-ref ref="Console" />
</logger>

以上配置的结果有两个问题:

  • 所有邮件都是重复的(均为追加)
  • com.mypkg在两个追加程序中仅显示INFO(不是TRACE)

你知道我在做什么错吗?是否有任何默认的spring logback文件,该文件在运行时以某种方式与此配置合并(将加性更改为false来解决复制问题,但仍然没有TRACE消息)?

谢谢。

1 个答案:

答案 0 :(得分:2)

您可以尝试登录过滤器。有一个名为LevelFilter的过滤器。此处也提供接受和忽略日志级别类型的选项。

示例:

<configuration>
  <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
      <level>INFO</level>
      <onMatch>ACCEPT</onMatch>
      <onMismatch>DENY</onMismatch>
    </filter>
    <encoder>
      <pattern>
        %-4relative [%thread] %-5level %logger{30} - %msg%n
      </pattern>
    </encoder>
  </appender>
  <root level="DEBUG">
    <appender-ref ref="CONSOLE" />
  </root>
</configuration>

更多信息在下面的注销文档中。

https://logback.qos.ch/manual/filters.html#levelFilter