Logback:我可以更改日志级别名称吗? (警告->警告)

时间:2018-11-08 09:48:25

标签: logback

登录:

timestamp INFO msg...
timestamp WARN msg...
timestamp INFO msg...

经典Java日志记录(JUL):

timestamp INFO    msg...
timestamp WARNING msg...
timestamp INFO    msg...

我希望警告级别长于INFO,因此在扫描日志输出时可以很容易地在视觉上区分它。

1 个答案:

答案 0 :(得分:1)

您可以指定不同的登录方式来实现所需的功能-您可以将信息级别的日志记录发送到使用标准布局的附加程序,然后警告使用单词WARNING的其他附加程序:

<configuration debug="true">
    <appender name="info" class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>WARN</level>
            <onMatch>DENY</onMatch>
            <onMismatch>ACCEPT</onMismatch>
        </filter>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>
                %d{"ISO8601", UTC} %p %m%n
            </pattern>
        </encoder>
    </appender>
    <appender name="warn" class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>WARN</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>
                %d{"ISO8601", UTC} WARNING %m%n
            </pattern>
        </encoder>
    </appender>
    <root level="info">
        <appender-ref ref="info"/>
        <appender-ref ref="warn"/>
    </root>
</configuration>

%p参数被替换为原始消息日志级别,因此我们将其保留为信息模式,对于警告模式,我们不使用%p,而是使用常量WARNING。

此配置将位于资源根目录下的logback.xml文件中。

编辑

更改了xml配置以使用过滤器,并且只有一个根记录器

这里的想法是过滤掉第一个附加程序的所有警告级别,然后在第二个仅接受警告级别并覆盖日志以显示警告

示例输出:

2018-11-08 10:52:40,460 WARNING Exception calculating properties for model(...)
2018-11-08 10:52:40,757 INFO Generating unique operation named: ...