web-dev-qa-db-ja.com

Javaデフォルトでロガー出力をファイルに出力する方法

Netbeansは思慮深くLogger.getLogger(this.getClass()。getName())。log(Level。[...]ステートメントをcatchブロックに振り分けます。ここで、それらすべてをファイル(およびコンソール)にポイントします。

すべてのロギングチュートリアルと私だけが特定のロガーをファイルに出力する方法を説明していますが、すべての自動生成されたロギングステートメントを修正するよりも良い方法があると思いますか?ある種のルートロガーなどのハンドラーを設定していますか?

28
Bloodboiler

起動時に以下を追加するだけです

Handler handler = new FileHandler("test.log", LOG_SIZE, LOG_ROTATION_COUNT);
Logger.getLogger("").addHandler(handler);

LOG_SIZEおよびLOG_ROTATION_COUNTには独自の値を指定できます

必要に応じて、ログレベルを調整する必要があります。

40
Miles D

ログが書き込まれる場所をロガー構成ファイルで定義する必要があります。たとえば、log4jを使用する場合、log4j.xml(またはlog4j.properties)ファイルにそのような情報が含まれます。

たとえば、次の例は、ファイル(my-app.log)とコンソールに直接ログインする単純なlog4j.xmlファイルです。

<?xml version="1.0" encoding="UTF-8"?>
<log4j:configuration xmlns:log4j="http://jakarta.Apache.org/log4j/">

    <appender name="rolling" class="org.Apache.log4j.DailyRollingFileAppender">
        <param name="File" value="my-app.log" />
        <param name="DatePattern" value=".yyyy-MM-dd" />
        <layout class="org.Apache.log4j.PatternLayout">
            <param name="ConversionPattern"
                value="%d{yyyy-MM-dd HH:mm:ss} %-5p [%C] [IP=%X{ipAddress}] [user=%X{user}] %m%n" />
        </layout>
    </appender>

    <appender name="console" class="org.Apache.log4j.ConsoleAppender">
        <layout class="org.Apache.log4j.PatternLayout">
            <param name="ConversionPattern"
                value="%d{yyyy-MM-dd HH:mm:ss} %-5p [%C] [user=%X{user}] %m%n" />
        </layout>
    </appender>

    <root>
        <priority value="info" />
        <appender-ref ref="console" />
        <appender-ref ref="rolling" />
    </root>

</log4j:configuration>
2
Romain Linsolas