あなたはロガーの命名規則に従っている場合。これは、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>