不同类的不同日志级别

时间:2016-11-14 10:51:57

标签: java log4j logback slf4j

下面,我有一个全局应用的logback配置。

我想在全局范围内使记录级别为ERROR,除了一个类。对于一个特定的类,我想使日志记录级别为INFO。我怎么能这样做?

<configuration scan="truef" scanPeriod="30 seconds">

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="com.foo.web.online.util.log.LogMaskingPatternLayout">

                <pattern>[START] Date: %d{yyyy-MM-dd} | Time: %d{HH:mm:ss.SSS} | Level: %-5level | Logger: %logger{5} | Marker: %marker | CIP: %X{clientIp} | UserAgent: %X{userAgent} | Website: %X{website} | SID: %X{sessionId} | RID: %X{requestId} | CID: %X{conversationId} | TID: %X{transactionId} | App: %X{app} | SubApp: %X{subApp} |  Msg: %msg [END] %n</pattern>
                </layout>     
            </encoder>
    </appender>

    <appender name="SIFT_INFO" class="ch.qos.logback.classic.sift.SiftingAppender">
        <discriminator class="ch.qos.logback.classic.sift.JNDIBasedContextDiscriminator">
            <defaultValue>unknown</defaultValue>
        </discriminator>
        <sift>
            <appender name="FILE-${contextName}" class="ch.qos.logback.core.rolling.RollingFileAppender">
                <file>/opt/local/logs/online/${contextName}.log</file>
                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                    <fileNamePattern>/opt/local/logs/online/${contextName}-%d{yyyy-MM-dd}.log</fileNamePattern>
                    <maxHistory>7</maxHistory>
                </rollingPolicy>
                <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
                    <layout class="com.foo.web.online.util.log.LogMaskingPatternLayout">
                         <pattern>[START] Date: %d{yyyy-MM-dd} | Time: %d{HH:mm:ss.SSS} | Level: %-5level | Logger: %logger{5} | Marker: %marker | CIP: %X{clientIp} | UserAgent: %X{userAgent} | Website: %X{website} | SID: %X{sessionId} | RID: %X{requestId} | App: %X{app} | SubApp: %X{subApp} | Page: %X{page} | Device: %X{device} | Browser: %X{browser} | Lang: %X{language} | IPCountry: %X{geoIpCountry} | IPCity: %X{geoIpCity} | ErrCode: %X{errorCode} | Msg: %msg [END] %n</pattern>
                </layout>  
                    </encoder>
            </appender>
        </sift>
    </appender>


    <logger name="com.foo" level="INFO">
        <appender-ref ref="SIFT_INFO" />
        <!-- <appender-ref ref="STDOUT" /> -->
    </logger>

    <logger name="org.hibernate.type" level="INFO" />
    <logger name="org.hibernate" level="INFO" />


</configuration>

1 个答案:

答案 0 :(得分:2)

您可以使用如下的根记录器:

<root>
    <level value="ERROR"/>
    <appender-ref ref="STDOUT"/>
    <appender-ref ref="SIFT_INFO"/>
</root>
<logger name="org.mycompany.MyClass">
    <level value="INFO"/>
</logger>