出力メッセージにコンパイル時定数として__LINE__
を含める方法を探しています。Javaで__LINE__相当ですか?
__LINE__
in JSおよび__LINE__
in C#に示唆されているように、さまざまな解決策が存在するようですが、ランタイムペナルティが大きくなります。それらは通常、常にlog4jとして実行時オブジェクトStackFrame
に基づいています。
log4jを必要に応じて有効/無効にすることは、通常はエラーが発生したとき、行番号を有効にするには遅すぎるため、インラインコードに行番号これ以上。 。理想的にEclipseのと統合何かで、
コンパイル前- プリプロセスJavaソースファイルなので、それはまた者協会のプラットフォーム上でテストすることができます:それはどちらかすることが可能です。
- 前処理ローディング時のクラス。その場合、オーバーヘッドは償却されることによって無視できる。
1.実際に私は醜いハックを使用してください:
私の好奇心のためだけに、ログに行番号が必要なのはなぜですか?エラーが発生すると、行番号を示す完全なスタックトレースが得られます。 – romaintaz
時には、例外として、行番号の代わりに 'Util.java(Inlined Compiled Code)'のようなものがあります。そして、時には私は例外なく、ただ情報を記録するだけです: "ここにいる"、 "ここにいる"、私は一意のメッセージを持つことを嫌っていました(行番号はそれらをユニークにします) –
JVMはその状況を処理する。どのJavaのバージョンを使用しますか? –