2017-11-15 14 views
0

スタックトレースにソースが表示されず、行番号が表示されないようにlog4j2を設定することはできますか?
なぜ私はそれが欲しいのだろうかと疑問に思っている場合、例外が正しく記録されるかどうかをテストする必要があるユニットテストのためにこれが必要です。たとえば、JREのバージョンが元のスタックトレースをコピーしたものと同じでない場合、テストが失敗します。したがって、ソースがスタックトレースに含まれていない場合は、バージョンの独立性が大幅に向上します。log4j2スタックトレース形式を変更してください

例:現在、スタックトレースからの行は次のようになります

at java.lang.Object.wait(Object.java:502) ~[?:1.8.0_144] 

私はそれが(だけlog4j2のために)このようになりたい:たぶん

at java.lang.Object.wait(Object.java:502) 

このようにしても:

at java.lang.Object.wait(Object.java) 

あるいは短い:

at java.lang.Object.wait 

(短縮バージョンのいずれかが許容可能です。現在唯一の情報源(例えば~[?:1.8.0_151]~[?:1.8.0_144])が異なります)

アップデート:私は%ex{full}を使用して、私が欲しいものであるべきだと思うhttps://logging.apache.org/log4j/2.x/manual/layouts.html#Patterns

私は公式ドキュメントでこれを見つけました。それをテストします。

他にもいくつかの形式があります。

+0

にする必要があります例外クラス名とメッセージをスタックトレース項目の基本形式と共にテストすれば十分だと思います。あなたが気にしているのは例外がトレースと共に記録されているという理由だけで、スタックトレース全体を比較したい理由がわかりません。 –

答えて

0

私は考えられません。 stacktraceはJVMから来ており、log4jは与えられたものを表示します。

+0

どういうわけか、それは可能なはずです。単体テストレポートのスタックトレースには、〜[?:1.8.0_144]の部分は含まれません。 – BrainStone

+0

ユニットテストレポートのスタックトレースはlog4jを経由していません – pecks

関連する問題