web-dev-qa-db-ja.com

プロパティを介してlog4j RollingFileAppenderを構成する実際の例が必要

ロギングにはlog4jを使用し、構成にはプロパティファイルを使用しています。現在、ログファイルが大きすぎます(ログファイルには3.5 GBは大きすぎます)。したがって、think RollingFileAppenderを使用する必要がありますが、使用すると、ログファイルが大きくなりすぎます。私はそれを誤って設定したと思います。誰かがRollingFileAppenderを設定するworkingの例を持っていますか?

記録のために、私の現在の構成は次のようになります。

log4j.appender.MAIN_LOG.File=${catalina.base}/logs/webtop.log
log4j.appender.MAIN_LOG=org.Apache.log4j.RollingFileAppender
log4j.appender.MAIN_LOG.layout=com.mycompany.util.log.Log4JSimpleLayout
log4j.appender.MAIN_LOG.DatePattern='.'yyyy-MM-dd
log4j.appender.MAIN_LOG.MaxFileSize=10MB
log4j.appender.MAIN_LOG.MaxBackupIndex=99
log4j.appender.MAIN_LOG.append=true
log4j.rootCategory=ALL, MAIN_LOG

RollingFileAppenderに代わるものも良い解決策です。

12
mcherm

私はそれを誤って設定したと思います。誰かRollingFileAppenderを設定する実用的な例がありますか?

これは私にとっては@mchermでうまくいくようです。下記参照。

あなたはsureと思っているlog4j.propertiesを使用していますか? .Fileを別のパスに変更して、ログ出力が新しいファイルに送信されるかどうかを確認してください。どのバージョンのlog4jを使用していますか? 1.2.15を実行しています。

お役に立てれば。


次のテストプログラムを作成しました。

package com.j256.ormlite;
import org.Apache.log4j.Logger;
public class Foo {
    private static Logger logger = Logger.getLogger(Foo.class);
    public static void main(String[] args) {
        for (int x = 0; x < 10000000; x++) {
            logger.error("goodness this shouldn't be happening to us right here!!!!");
        }
    }
}

私のlog4j.propertiesファイルは以下を保持します:

log4j.appender.MAIN_LOG=org.Apache.log4j.RollingFileAppender
log4j.appender.MAIN_LOG.File=${catalina.base}/logs/webtop.log
log4j.appender.MAIN_LOG.layout=com.j256.ormlite.Log4JSimpleLayout
log4j.appender.MAIN_LOG.MaxFileSize=10MB
log4j.appender.MAIN_LOG.MaxBackupIndex=5
log4j.appender.MAIN_LOG.append=true
log4j.rootCategory=ALL, MAIN_LOG

RollingFileAppenderに無効なDatePatternを削除したことに注意してください。私のレイアウトは:

package com.j256.ormlite;
import org.Apache.log4j.spi.LoggingEvent;
public class Log4JSimpleLayout extends org.Apache.log4j.Layout {
    @Override
    public String format(LoggingEvent event) {
        return "log message = " + event.getMessage().toString() + "\n";
    }
    @Override
    public boolean ignoresThrowable() {
        return true;
    }
    public void activateOptions() {
    }
}

-Dcatalina.base=/tmp/で実行すると、/tmp/logs/にインデックス#5までのファイルがあり、サイズは10MBです。 MaxFileSizeまたはMaxBackupIndexを調整すると、適切に調整されます。

17
Gray

問題は、DatePatternを指定しているという事実にある可能性があります。 DatePatternは、DailyRollingFileAppenderと共に使用して、ログファイルをローリングする日付を指定することを目的としています。 MaxFileSizeおよびMaxBackupIndex属性と組み合わせて使用​​できるとは思いません。 Log4jを使用すると、ファイルサイズまたは日付ではなく両方に基づいてファイルをロールできます。

5
Hunter.C

ログファイルを毎日ロールする必要がある場合は、RollingFileAppenderの代わりにDailyRollingFileAppenderを使用する必要があります。 MaxFileSize制限を指定する必要はありません。代わりに、頻度に基づいてファイルをローリングするにはDatePatternで十分です。ログファイルを毎分ローリングするために、log4j.propertiesファイルで以下の設定を試しました。

log4j.appender.infoAppender = org.Apache.log4j.DailyRollingFileAppender

log4j.appender.infoAppender.Threshold = INFO

log4j.appender.infoAppender.DatePattern = '。' yyyy-MM-dd HH-mm

log4j.appender.infoAppender.File = C:/logs/info.log

2
Priyanka

-Dlog4j.debug JVMパラメータ。これにより、見つかって使用している構成ファイルなどを示すデバッグ情報の数行が出力されます。これにより、問題の手掛かりが得られます。

http://logging.Apache.org/log4j/1.2/manual.html を参照してください

0
Martin Dow