2013-06-04 78 views
6

私はlog4j2を使用していますが、どのようにクラス名でフィルタリングできるか分かりません。 RegexFilterを試してみましたが、テキストメッセージのみをフィルタリングします。古いlog4jではタグ 'filter'で十分でしたlog4j2のクラス名でフィルタ

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

誰かが今どのように知っていますか?

ありがとうございます!

更新:

[OK]を、私はそれをやりました!私は、「名前」ロガーを定義し、属性にクラス名を設定する必要があります。

<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ロギングのみが含まれます。に書き込まれませんパッケージcom.other.company内のクラスによって、すべてのログ:

<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> 

ルーティングは

以下の例では、ルートログロギングを行うクラスのパッケージに基づいてログファイルを分離するためにイベントをする示し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> 
関連する問題