Antで実行中にEclipseのコンソールに正しく表示されるようにApache log4jでログを取得しようとしましたが、運がない。私はデバッグの優先順位とConsoleAppenderを持つ基本的なルートロガーを持っている動作しているlog4j.xml設定を持っています。私はプロジェクトからlog4j.xmlを削除すると、Antターゲットはlog4j設定が欠落していると不平を言ってしまうため、ロガーが動作することを確認しました。アペンダーをファイルアペンダーに切り替えると、すべての出力が適切にファイルに送られます。それをコンソールに戻すと、標準のAnt出力以外はEclipseコンソールには何も得られません。Antで実行しているときにEclipseコンソールでLog4jメッセージが失われた
私のJUnitテストではlog4jメッセージが出力されていますが、私はそれらをバッチで実行し、それらのプロセスをforkしているためです。
コマンドラインでまったく同じAntスクリプトを変更せずに実行すると、Log4jの出力がAnt出力とインターレースされることが予想されます。私のMac 10.6 Intel 64マシンで、Eclipse HeliosでAnt 1.7.1を実行しています。私はこれもHeliosを実行しているWindows XPマシン上の問題であることを確認しました。私は自分のコンソールアペンダー設定で「follow」をtrueに設定しようとしましたが、これは役に立たなかった。
私はコードスニペットを提供することができますが、私が言及したように、私はlog4jが正しく構成されていることを証明しました。そして、log4j.xmlがクラスパス上で取得され、ロギングが実行され出力されています。 AntにEclipseを統合する方法と関係があります。他の誰かがこれを体験していますか?これはEclipseプロジェクトに提出するものなのでしょうか?
も参照してください:http://stackoverflow.com/questions/3501355/log4j-output-not-displayed-in-eclipse-console –
これは直接的な回答ではなく、関連性があるかどうかはわかりません。私がEclipseコンソールで気づいた問題の1つは、他のほとんどのコンソールとは異なり、System.out(またはSystem.err)上で明示的な 'flush()'が呼び出されるまではメッセージを出力しないということです。可能であれば、メッセージをロギングした後でflush()を試してください(もちろんこれは永久的な解決策ではありません)。 –
@Martin - 私のJUnitはすべてのレベルで正しく出力されますが、これは私が定義したカスタムtaskdefのようです。私は戻ってタスクとしてこれを実行し、代わりに私のカスタムAntタスクを通して何が起こるかを見ていくつもりです。 –