如何使用springboot和logback按严重性将日志记录到不同的文件
Posted
技术标签:
【中文标题】如何使用springboot和logback按严重性将日志记录到不同的文件【英文标题】:How to separate logging by severity to different files using springboot and 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 消息)?
谢谢。
【问题讨论】:
【参考方案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 %logger30 - %msg%n
</pattern>
</encoder>
</appender>
<root level="DEBUG">
<appender-ref ref="CONSOLE" />
</root>
</configuration>
更多信息在下面的 logback 文档中。
https://logback.qos.ch/manual/filters.html#levelFilter
【讨论】:
以上是关于如何使用springboot和logback按严重性将日志记录到不同的文件的主要内容,如果未能解决你的问题,请参考以下文章
SpringBoot+logback实现按业务输出日志到不同的文件
springboot~logback按level添加不同的颜色
springboot~logback按level添加不同的颜色