log4j2でクラスごとにファイル出力する方法は何ですか?

log4j2では、クラス名に基づいてログを異なるファイルに出力できます。まず、log4j2の設定ファイルで1つ以上のロガーを定義し、名前と出力先のファイルを指定する必要があります。

log4j2.xmlという設定ファイルの例を以下に示す:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <File name="FileAppender1" fileName="logs/app1.log">
            <PatternLayout pattern="%d [%t] %-5level %logger{36} - %msg%n" />
        </File>
        <File name="FileAppender2" fileName="logs/app2.log">
            <PatternLayout pattern="%d [%t] %-5level %logger{36} - %msg%n" />
        </File>
    </Appenders>
    <Loggers>
        <Logger name="com.example.app1" level="debug" additivity="false">
            <AppenderRef ref="FileAppender1" />
        </Logger>
        <Logger name="com.example.app2" level="debug" additivity="false">
            <AppenderRef ref="FileAppender2" />
        </Logger>
        <Root level="error">
            <AppenderRef ref="FileAppender1" />
        </Root>
    </Loggers>
</Configuration>

設定ファイルには、2つのFileAppenderが定義されており、それぞれ異なるファイル(app1.logとapp2.log)に出力されます。その後、2つのLoggerが定義され、それぞれ異なるクラス(com.example.app1とcom.example.app2)に対応しており、使用するFileAppenderがそれぞれ指定されています。

これにより、これらの2つのクラスのログが出力されると、クラス名に応じて対応するファイルにログが出力されます。同時に、すべての他の指定されていないFileAppenderのログが、FileAppender1に対応するファイルに出力されるRoot Loggerも定義されています。

log4j2.xml の設定ファイルをクラスパスに配置する必要があります。そうすることで log4j2 がそれを見つけて読み込むことができます。

bannerAds