2

このチュートリアルに従いました

このコードはありますが、ログ ファイルは書き込まれませんでした。

私は何が欠けていますか?

ここに私のコードがあります: https://github.com/elad2109/log4j_sift/blob/master/src/main/java/com/waze/rr_logger/SiftExampleLog4j.java

    import org.apache.log4j.Logger;
    import org.slf4j.LoggerFactory;


public class SiftExampleLog4j {

    static org.apache.log4j.Logger logger = Logger.getLogger(SiftExampleLog4j.class);

    public void log() {
        BasicConfigurator.configure();

        org.apache.log4j.MDC.put("session_id","MyGooApp");

        logger.error("example1");

        org.apache.log4j.MDC.put("session_id","MyFooApp");

        logger.error("example2");
    }
}

log4j.properties

    log4j.rootLogger=INFO, sift, osgi:VmLogAppender

# Sift appender
log4j.appender.sift=org.apache.log4j.sift.MDCSiftingAppender
log4j.appender.sift.key=session_id
log4j.appender.sift.default=no_session_id
log4j.appender.sift.appender=org.apache.log4j.FileAppender
log4j.appender.sift.appender.layout=org.apache.log4j.PatternLayout
log4j.appender.sift.appender.layout.ConversionPattern=%d{ISO8601} | %-5.5p | %-16.16t | %-32.32c{1} | %m%n
log4j.appender.sift.appender.file=$\\{session_id\\}.log
log4j.appender.sift.appender.append=true

MyGooApp.logとの 2 つの出力ログ ファイルが表示されるはずですMyFooApp.log。しかし、私はそれらをどこにも見つけることができません。

アップデート

私はこれを試しました:

log4j.appender.sift.appender.file=./$\\{session_id\\}.log

それでも、出力ファイルが表示されるようになりました:

ここに画像の説明を入力

4

3 に答える 3

1

ファイル名( )として相対パスを使用しているようですlog4j.appender.sift.appender.file=$\\{session_id\\}.log

log4j のログ レベルを debug に設定すると、生成されたログ内に次のようなステートメントが表示されます。

setFile called: "+fileName+"

log4j.configDebug 変数を定義することで、log4j 内部ログを有効にできます。すべての log4j 内部デバッグ呼び出しは System.out に送られ、内部エラー メッセージは System.err に送られます。すべての内部メッセージには、文字列 "log4j: " が先頭に追加されます。

テストとして、ファイル プロパティを次のように変更することもできます。

log4j.appender.sift.appender.file=./$\\{session_id\\}.log

.現在のフォルダー (通常はプロジェクトのルート フォルダー) を表します。

于 2016-05-09T06:35:42.987 に答える