2016-11-14 50 views
2

下面,我有一个全局应用的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> 

回答

2

您可以使用一个根记录像这样:

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

你在哪里有参考org.foo.MyClass记录? – DarthVader

+0

你说你只需要一个类的INFO级别,这是你放置类的FQN的地方(我刚刚使用了一个例子)。 – shayy

+0

好的。这有点奏效。除了它打印两次相同的日志。 – DarthVader

相关问题