2013-03-12 13 views
5

フォームに関する簡単な質問です。Java - ログメッセージに定数を使用する必要がありますか?

私はさまざまなエラーメッセージをログに記録していますが、ログ呼び出し内でメッセージの新しい文字列を作成するか、他の文字列定数を格納するために使用しているインタフェース内に定数文字列を作成してから参照してください。 私はコードアナライザのコードを使用していました。後者の場合、文字列定数を作成して参照することをお勧めします。 これが本当に事実かどうか疑問に思っていますか?事前

+0

これはディスカッションタイプの質問で、おそらく閉鎖されます。しかし、私は貢献することに抵抗することはできません。ログメッセージは、定数キーによって参照されるプロパティファイルに属しているため、必要に応じて他の言語に変換できます。 –

+3

@ ErnestFriedman-Hill:ログメッセージはランタイムのデバッグツールであり、ユーザが見るべきものではありません。 –

+0

コードが第三者によって使用されるjarファイルに入ると、ログに記録されたエラーメッセージをローカライズされている! –

答えて

3

おかげで私はあなたが使用しているものアナライザツールまたはあなたはそれをどう設定したかわからないけどアドバイスは私には無効と思われます。 Javaコンパイラはすでに文字列定数を作成します(コードがlogメソッドを呼び出すときに新しいStringインスタンスを割り当てません)。この作業を手動で行うにはどうすればよいでしょうか?

文字列定数をインターフェイスに入れた場合、クラス間では共有できますが、あなたの考え方では共有できません。Javaコンパイラは定数の値を使用しているコードにコピーしますコードにはインタフェースへの参照はもうありません!)

私の提案:誤解を招く警告を消してください。

+0

ありがとうございました! 次の項目を確認してください:https://stackoverflow.com/questions/446663/best-way-to-define-error-code-strings-in-java –

2

ロギングは簡単に追加および削除する必要があります。単純に非常に薄い層を提供する。そして、MessageFormatsが使用されている可能性があります。これは、エラーが発生しやすい/定数名に置き換えられたときにチェックを外すことができます。

また、定数が変更されたときに文字列定数がインポートされ、変更が検出されなくなりました。

また、ログ文字列自体はあまり厳密ではありません。

これらの文字列を非国際化可能としてマークするほうがよい。

関連する問題