1

ConsoleAppender を使用して log4j ロガー上にロガーを作成しました。コードは次のとおりです。

public class AppLogger{ 

   static {
        ConsoleAppender ca = new ConsoleAppender(new PatternLayout(PatternLayout.TTCC_CONVERSION_PATTERN));
        org.apache.log4j.Logger.getRootLogger().addAppender(ca);
   }
   public AppLogger(Class classname) {
        logger = LoggerFactory.getLogger(classname);
   }

   public void debug(String message){
        logger.debug(message);
   }
...
...
}

log4j.properties ファイルをどこに置くべきかわからないため、使用していません。上記のコードは正常に機能しており、コンソールに正しく記録されています。FileAppender で使用するように変更したいと思います。

次のように静的コンストラクターを単純に更新しました。

    FileAppender fa = new FileAppender();
    fa.setFile("d:/log.txt");
    fa.setLayout(new PatternLayout(PatternLayout.DEFAULT_CONVERSION_PATTERN));
    org.apache.log4j.Logger.getRootLogger().addAppender(fa);

faの代わりに追加されましたca。しかし、今私はこのエラーを受けています、

log4j:ERROR [null] という名前のアペンダーに出力ストリームまたはファイルが設定されていません。

File Appender から定義するために欠落しているプロパティがわかりません。

4

1 に答える 1

3

オプションを有効にするのを忘れました:

FileAppender fa = new FileAppender();
fa.setFile("d:/log.txt");
fa.setLayout(new PatternLayout(PatternLayout.DEFAULT_CONVERSION_PATTERN));
fa.activateOptions(); \\ ← activate the options
org.apache.log4j.Logger.getRootLogger().addAppender(fa);

このメソッドOptionHandler#activateOptions()は、オプション セッターの呼び出しで以前に設定されたオプションを有効にします。

于 2015-01-30T14:59:39.837 に答える