12

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

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

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 に代わるものも良い解決策です。

4

4 に答える 4

17

設定を誤ったと思います。RollingFileAppender を構成する実際の例はありますか?

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

あなたが思っている 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() {
    }
}

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

于 2010-09-29T17:59:38.040 に答える
5

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

于 2010-11-03T15:10:08.647 に答える
2

ログ ファイルを毎日ローリングする必要がある場合は、RollingFileAppender の代わりに DailyRollingFileAppender を使用する必要があります。頻度に基づいてファイルをローリングするには、DatePattern だけで十分です。代わりに、MaxFileSize 制限を指定する必要はありません。ログファイルを毎分ローリングするために、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

于 2011-06-01T10:11:40.397 に答える
0

まず、-Dlog4j.debugJVM パラメータを設定します。これにより、見つかった構成ファイルや使用している構成ファイルなどを示すデバッグ情報の有用な行がいくつか出力されます。これにより、何が問題なのかについての手がかりが得られるはずです。

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

于 2013-04-24T08:39:07.230 に答える