2010-12-29 31 views
3

私はantスクリプトでログを管理するためにorg.apache.tools.ant.listener.Log4jListenerを使用しています。 antスクリプトは高度に構成可能で、さまざまなパラメータでさまざまな方法で実行できるように設計されているため、実行時に指定されたファイルにログできるようにする必要があります。私はlog4j.propertiesに定義されたant再定義プロパティーを起動しようとしたにもかかわらず、build.logというログファイルを指定するlog4j.propertiesを持っています。実行時にlog4jを設定する

ビルドはビルドを無視し、build.logへの書き込みを続けます。カスタムファイルへの書き込みに関する多くのサポートは、JavaでLoggerクラスが使用されている場合を除き、私はそれほどサポートされていません。

おそらく私は間違ってこれを考えています。 log4j.propertiesは、antスクリプト内のプロパティファイルと同じ方法で扱われません(したがって、コマンドラインからオーバーライドできます)。カスタムタスクや何かを書くことなく知的にこれを行う方法はありますか?

答えて

1

あなたのセットアップコマンドラインで動的に定義することができ、システムのプロパティを使用して、log4j.propertiesファイル。以下のプロパティは "$ {logfile.name}"です。例log4j設定は次のようになり:「ANT」を呼び出すとき

# logfile is set to be a RollingFileAppender 
log4j.appender.logfile=org.apache.log4j.RollingFileAppender 
log4j.appender.logfile.File=${logfile.name} 
log4j.appender.logfile.MaxFileSize=10MB 
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout 
log4j.appender.logfile.layout.ConversionPattern=[%-5p]%d{[email protected]\:mm\:ss,SSS}\:%c - %m%n 

コマンドラインオプションは、プロパティを渡すために、「-Dlogfile.name = {ログファイルの実行時のパス/ファイル名}」です。 {ランタイムパス/ログファイルのファイル名}をファイル名に置き換えます。 antが実行されると、この値はシステムプロパティとして設定されます。そのシステムプロパティは、実行時にlog4j.propertiesに代入されます。

http://ant.apache.org/manual/running.html

関連する問題