不同Logback追溯程序的特定于包的日志记录级别 [英] Package-specific logging levels for different Logback appenders

查看:1386
本文介绍了不同Logback追溯程序的特定于包的日志记录级别的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这个简单的Logback配置文件,包含两个appender和一些基于包名称的自定义日志记录级别。

I have this simple Logback config file, containing two appenders and some custom logging levels based on package name.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<configuration>

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <charset>UTF-8</charset>
            <pattern>%date{HH:mm}\t%-5level\t%msg%n</pattern>
        </encoder>
    </appender>

    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>my_logger.log</file>
        <encoder>
            <charset>UTF-8</charset>
            <pattern>%date{dd MMM HH:mm}|%class{0}|%-5level|%msg%n</pattern>
        </encoder>
    </appender>

    <!-- custom logging levels -->
    <logger name="myapp.package1" level="INFO" />
    <logger name="myapp.package2" level="INFO" />

    <root>
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
    </root>

</configuration>

使用此配置,自定义日志记录级别将应用于两个附加程序。

With this configuration, the custom logging levels are applied for both appenders.

如何更改它,使 ConsoleAppender 使用这些自定义日志记录级别,而 FileAppender 符合默认级别?

How can I change it so that only ConsoleAppender uses these custom logging levels, while FileAppender sticks to default levels?

推荐答案

如果您不想实现自定义过滤器,一个固定的阈值(在 INFO 中):

If you don't want to implement a custom filter, you can create a new appender with a fixed threshold (in you case INFO):

<appender name="INFO_CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    ...
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>INFO</level>
    </filter>
</appender>

然后,对于您的自定义日志记录级别,添加 INFO_CONSOLE 和您的 FILE 附加程序。 additivity =false属性阻止记录器记录到从继承的 CONSOLE

Then, for your custom logging levels add the INFO_CONSOLE and your FILE appender. The additivity="false" attribute prevents the logger from logging to the CONSOLE appender inherited from root.

<logger name="myapp.package1" additivity="false">
    <appender-ref ref="INFO_CONSOLE" />
    <appender-ref ref="FILE" />
</logger>

这应该记录 DEBUG FILE CONSOLE 追加者,除了 myapp.package1 将只记录 INFO 以及 CONSOLE

This should log DEBUG and above to the FILE and CONSOLE appenders, except for myapp.package1 which will only log INFO and above to CONSOLE.

这篇关于不同Logback追溯程序的特定于包的日志记录级别的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆