【问题标题】:How to separate logging by severity to different files using springboot and logback如何使用springboot和logback按严重性将日志记录到不同的文件
【发布时间】:2019-08-25 03:28:23
【问题描述】:

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

我配置了 2 个附加程序(控制台、滚动文件),我想要所有

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

上面配置的结果有2个问题:

  • 所有消息都是重复的(两个附加程序)
  • com.mypkg 仅显示两个附加程序的 INFO(而不是 TRACE)

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

谢谢。

【问题讨论】:

    标签: java spring spring-boot logback


    【解决方案1】:

    您可以尝试使用 logback 过滤器。有一个过滤器叫做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>
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-25
      • 1970-01-01
      • 1970-01-01
      • 2022-06-16
      • 2017-01-03
      • 2017-10-07
      • 2013-08-13
      • 2017-05-06
      相关资源
      最近更新 更多