2016-08-11 11 views
0

私はANTベースのアプリケーションを持っていますが、例外、情報、致命的なエラーなどでslf4j loggerを使用してログしました。ログの詳細についてはlog4j設定を使用しています。私はこのためにslf4j-log4j12-1.5.2.jarを使用しました。以下はログの構成です。log4jコンフィギュレーションを使用してstderrとstdoutストリームをCLIで区切ります

log4j.rootLogger=info, file, stdout, stderr 
log4j.appender.file=org.apache.log4j.RollingFileAppender 
log4j.appender.file.File=cmd.log 
log4j.appender.file.MaxFileSize=1024KB 
log4j.appender.file.MaxBackupIndex=4 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss,SSS} %-5p (%13F:%L) %3x - %m%n 

log4j.appender.errorFile=org.apache.log4j.RollingFileAppender 
log4j.appender.errorFile.File=error_stream.log 
log4j.appender.errorFile.MaxFileSize=1024KB 
log4j.appender.errorFile.MaxBackupIndex=4 
log4j.appender.errorFile.layout=org.apache.log4j.PatternLayout 
log4j.appender.errorFile.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss,SSS} %-5p (%13F:%L) %3x - %m%n 
log4j.appender.errorFile.Threshold=ERROR 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.Target=System.out 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss} %5p - %m%n 

log4j.appender.stderr=org.apache.log4j.ConsoleAppender 
log4j.appender.stderr.Threshold=WARN 
log4j.appender.stderr.Target=System.err 
log4j.appender.stderr.layout=org.apache.log4j.PatternLayout 
log4j.appender.stderr.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss} %5p - %m%n 

私はアリのようにAntスクリプトを通じて自分のアプリケーションを呼び出しています-fのbuild.xml 1> out.txtを2> err.txt 今ではerr.txtするすべてのエラーをストリーミングする必要があります。しかし、out.txtに入る

注:error_stream.logを作成してエラーが発生することがあります。しかし、err.txtにはありません

誤った設定プロパティを使用していますか?

+0

。 (Java 9ではlog4j 1.2が壊れているため移行することを検討してください:https://blogs.apache.org/logging/entry/moving_on_to_log4j_2) –

答えて

0

ANTによって起動されたアプリケーションのログを定義しようとしていますか?または、ANT(アプリケーションをカプセル化するプロセス)のログを定義しようとしていますか?

それは後者だ場合は、ANTには、例えば、loggers and listenersをサポートしています。

+0

カスタムANTタスクでロガーを定義してログに記録しました。上記のlog4j設定でログを取得しました。 –

0

をアリTaskクラスとの問題があります。それはhandleErrorOutputを "warning"として扱い、警告は出力ストリームへのストリームです。

以下の変更を加えてant.jarを変更できます。それが動作します。これはlog4j1質問ですので、log4j2タグを削除

Task_before_changes.java

protected void handleErrorOutput(String output) { 
    log(output, Project.MSG_WARN); 
} 

Task_after_changes.java

protected void handleErrorOutput(String output) { 
    log(output, Project.MSG_ERR); 
} 

関連する問題