LogBackのRollingFileAppender
(ch.qos.logback.core.rolling.RollingFileAppender
)をプログラムで設定しようとしていますが、動作していないようです。私がFileAppender
を使用しているとき、すべてがまったく同じ構成(ポリシー/トリガーが少ない)で正常に動作しているように見えるので、許可の問題ではないと推測しています。私はすべてのポリシー設定をコメントアウトしてみましたが、どちらも役に立たなかった。以下はハードコードされた値を持つサンプルコードです。また、これまで全く何のエラーもありません。 LogBackのソースコードをデバッグすると、間違っている可能性のあるものは見られませんでした。LogBack RollingFileAppenderがログファイルを書き込んでいない(FileAppenderは機能しますが)
ヒントは参考になります。私は設定ファイルなしでこれを動作させる必要があります。これは私の組織の制限だからです。私はこれをMacBookでテストしています。
Logger logger = (Logger)LoggerFactory.getLogger(applicationName);
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
lc.reset();
RollingFileAppender<ILoggingEvent> fileAppender =
new RollingFileAppender<ILoggingEvent>();
fileAppender.setAppend(true);
fileAppender.setFile("/Users/Jack/Desktop/logs/" + applicationName + ".log");
fileAppender.setContext(lc);
SizeBasedTriggeringPolicy<ILoggingEvent> rPolicy =
new SizeBasedTriggeringPolicy<ILoggingEvent>("20MB");
fileAppender.setTriggeringPolicy(rPolicy);
TimeBasedRollingPolicy<ILoggingEvent> tPolicy =
new TimeBasedRollingPolicy<ILoggingEvent>();
tPolicy.setFileNamePattern("/archive/" + applicationName + ".%d");
tPolicy.setMaxHistory(180);
tPolicy.setParent(fileAppender);
tPolicy.setContext(lc);
PatternLayout pl = new PatternLayout();
pl.setPattern("%d %5p %t [%c:%L] %m%n)");
pl.setContext(lc);
pl.start();
fileAppender.setLayout(pl);
fileAppender.start();
logger.addAppender(fileAppender);
logger.setLevel(Level.DEBUG);
logger.debug("Test message");
私は問題を把握しました。私は、appenderが決して開始しないようにRollingPolicyを設定するのを忘れていました。私はこの部分を見落としたので、開始できないときに例外をスローすると仮定しました。 – juminoz
これは先週、RollingPolicyを設定した後に正常に機能していて、突然停止しました。私は現在、デバッグモードをプログラムで有効にして、何が起こっているかを確認する方法を探しています。 FileAppenderはまだ動作しているので、間違いなく許可の問題はありません。もう1つのスレッドがここにあります。 http://stackoverflow.com/questions/8482359/programmatically-enable-logback-in-debug-mode – juminoz