266

コンソールと log4j2 を使用したファイル アペンダーを備えた非常に単純な XML 構成ファイルが必要です。

(Apache Web サイトは、多くの情報で私を殺しています。)

4

4 に答える 4

317
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
        </Console>
        <File name="MyFile" fileName="all.log" immediateFlush="false" append="false">
            <PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </File>
    </Appenders>
    <Loggers>
        <Root level="debug">
            <AppenderRef ref="Console" />
            <AppenderRef ref="MyFile"/>
        </Root>
    </Loggers>
</Configuration>

ノート:

  • 次の内容を構成ファイルに入れます。
  • 構成ファイルに log4j2.xml という名前を付けます
  • log4j2.xml をクラスパスにあるフォルダー (つまり、ソース フォルダー "src") に配置します。
  • Logger logger = LogManager.getLogger();ロガーの初期化に使用します
  • これはSSD の寿命に適しているため、 immediateFlush="false"を設定しました。ログ ファイルですぐにログが必要な場合は、パラメーターを削除するか、true に設定します。
于 2014-01-18T16:53:09.183 に答える
12

log4j2 には非常に柔軟な構成システムがあり (これは助けというより気を散らすものです)、JSON を使用することもできます。リファレンスについては、 https://logging.apache.org/log4j/2.x/manual/configuration.htmlを参照してください。

個人的には、最近 log4j2 を使い始めたばかりですが、スキーマ検証が可能な「厳密な XML」構成 (つまり、要素名の代わりに属性を使用する) を使用する傾向があります。

ファイル名を設定するために「プロパティ」を使用して、自動構成と厳密モードを使用した簡単な例を次に示します。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration monitorinterval="30" status="info" strict="true">
    <Properties>
        <Property name="filename">log/CelsiusConverter.log</Property>
    </Properties>
    <Appenders>
        <Appender type="Console" name="Console">
            <Layout type="PatternLayout" pattern="%d %p [%t] %m%n" />
        </Appender>
        <Appender type="Console" name="FLOW">
            <Layout type="PatternLayout" pattern="%C{1}.%M %m %ex%n" />
        </Appender>
        <Appender type="File" name="File" fileName="${filename}">
            <Layout type="PatternLayout" pattern="%d %p %C{1.} [%t] %m%n" />
        </Appender>
    </Appenders>
    <Loggers>
        <Root level="debug">
            <AppenderRef ref="File" />
            <AppenderRef ref="Console" />
            <!-- Use FLOW to trace down exact method sending the msg -->
            <!-- <AppenderRef ref="FLOW" /> -->
        </Root>
    </Loggers>
</Configuration>
于 2016-09-29T08:14:23.127 に答える