2017-02-12 9 views
0

私はLoggerにカスタムログレベルメソッドを実装したいと思います。たとえば、私はlog.custom("custom level log")に電話したいと思います。 documentationによれば、それは可能ですが、私には十分なヒントはありません。誰かがこのコマンドが正確に何をするのか理解するのを助けることができますか?Log4j-2カスタムログレベルコードジェネレータ

java -cp log4j-core-2.8.jar \ 
    org.apache.logging.log4j.core.tools.Generate$ExtendedLogger \ 
    com.mycomp.ExtLogger DIAG=350 NOTICE=450 VERBOSE=550 > com/mycomp/ExtLogger.java 

このコマンドを正常に終了したら、どのような手順を実行しますか?正確に何を交換すればいいですか?

答えて

1

ツールの目的は、プロジェクトに含めることができるソースコードを生成することです。標準のLog4j2 Loggerの代わりに生成されたクラスを使用することを意図しています。

ツールを実行する前に、カスタムレベルとは何を呼び出すか、ランク付けする場所を既存のレベルと比較して決定する必要があります。マニュアルページには、組み込みレベルのint値を持つテーブルが表示されます。カスタムレベルのint値は、おそらくこれらの値の中間になります。

引用した例では、ExtLoggerという名前のクラスがcom.mycompパッケージに生成され、3つのカスタムレベル(DIAG、NOTICE、およびVERBOSE)を持つ標準のLog4j2 Loggerを拡張します。 DIAGのint値は350ですので、WARN(300)とINFO(400)の間にあります。

ツールは、生成されたソースコードをコンソールに書き込みます。この例は、その出力をファイルにリダイレクトする方法を示しています。このファイルをプロジェクトに含めることができます。

+0

詳細な回答ありがとうございます。このエラーを確認してください。 https://gist.github.com/sdwsk/47b86d243023b1583d340889a89639f6 – Sebastian

+0

私は何か変わったことに気付きました:エラーメッセージは、 'Generate'クラスにはmainメソッドがありませんが、実行しようとしているのは' Generate $ ExtendedLogger'内部クラス。内部クラス_does_にはmainメソッドがあります。おそらくコマンドラインは '$ Extended'を環境変数として解釈しています。あなたは完全修飾クラス名を引用することができますか? –

+0

これに対処するためhttps://issues.apache.org/jira/browse/LOG4J2-1814を作成しました。 –