2013-06-04 42 views
6

我正在使用log4j2,我不知道如何按類名過濾。我已經嘗試使用RegexFilter,但它只能過濾文本消息。在舊的log4j已經足夠用標籤'過濾器'在log4j2中按類名過濾

<filter class="aaaa.bbbb.cccc.ClassName"> 

有人知道現在怎麼辦?

預先感謝您!

更新:

好的,我做到了!我需要定義一個記錄器,並在屬性「名」設置的類名稱:

<loggers> 
    <logger name="aaaa.bbbb.cccc.ClassName" additivity="false" level="info"> 
     <appender-ref ref="RollingFile" /> 
    </logger> 
    <root level="error"> 
     <appender-ref ref="RollingFile" /> 
    </root> 
</loggers> 

回答

2

這會自動在Log4j的,如果你遵循記錄器的命名約定的工作。在代碼中,聲明記錄儀與他們的類名:

Logger logger = LogManager.getLogger(MyClass.class); 

該記錄儀自動分配的名稱fully.qualified.class.name.of.MyClass。現在,在你的配置,你可以使用這個完全限定域名(或包名稱或包的第一部分)做過濾和路由:

過濾

下面的例子說明如何過濾日誌基於類的包進行日誌記錄的事件:包com.other.company中的所有DEBUG和TRACE級日誌事件將被忽略,並且對於包中的類com.another.project,將只包括ERROR和FATAL日誌記錄。

<Configuration status="warn"> 
    <Appenders> 
    <File name="MyFile" fileName="logs/my.log"> 
     <PatternLayout pattern="%d %p %c{1.} [%t] %m%n" /> 
    </File> 
    </Appenders> 
    <Loggers> 

    <!-- drops all DEBUG and TRACE logging done by any class in this package --> 
    <Logger name="com.other.company" level="INFO" /> 

    <!-- log only ERROR and FATAL logging by classes in this package --> 
    <Logger name="com.another.project" level="ERROR" /> 

    <!-- by default, all log events are written to MyFile --> 
    <Root level="trace"> 
     <AppenderRef ref="MyFile"/> 
    </Root> 
    </Loggers> 
</Configuration> 

路由

下面的例子說明了如何將日誌事件,以單獨的日誌根據包裝上的類做日誌的文件:在包com.other.company所有日誌記錄由類不會被寫入my.log只有到other.log

<Configuration status="warn"> 
    <Appenders> 
    <File name="MyFile" fileName="logs/my.log"> 
     <PatternLayout pattern="%d %p %c{1.} [%t] %m%n" /> 
    </File> 
    <File name="OtherFile" fileName="logs/other.log"> 
     <PatternLayout pattern="%d %p %c{1.} [%t] %m%n" /> 
    </File> 
    </Appenders> 
    <Loggers> 
    <!-- all logging from this package and subpackages goes to OtherFile --> 
    <!-- Note: set additivity=false or logging will also go to the root logger --> 
    <Logger name="com.other.company" additivity="false"> 
     <AppenderRef ref="OtherFile"/> 
    </Logger> 
    <Root level="trace"> 
     <AppenderRef ref="MyFile"/> 
    </Root> 
    </Loggers> 
</Configuration>