Javaでのログ取得と一般的なログ取得。ベストプラクティス?
質問
時々、自分のロギングコードを見たときに、それが正しく行われているのかどうか疑問に思うことがあります。それに対する明確な答えはないかもしれませんが、私は次のような懸念があります。
ライブラリクラス
いくつかのログを記録するライブラリクラスがあります。
INFO
メッセージを記録します。致命的なエラーは例外として報告されます。現在、私はロギング名としてクラス名を持つ私のクラスで静的なロガー・インスタンスを持っています。(Log4jの
Logger.getLogger(MyClass.class)
)
これは正しい方法でしょうか?このライブラリクラスのユーザは、私の実装からのメッセージを望まないか、アプリケーション固有のログにリダイレクトしたいと思うかもしれません。この場合、ユーザが外部からロガーを設定できるようにする必要がありますか? このような場合、どのように対処するのでしょうか?
一般的なログ
いくつかのアプリケーションでは、私のクラスはクラスの名前によって識別されない特定のログにログメッセージを書きたいかもしれません。(例:
HTTP Request log
) そのようなことをするための最良の方法は何でしょうか?ルックアップサービスが思い浮かびます...。
どのように解決するのですか?
あなたの規約はかなり標準的であり、かなり良いものです(imho)。
注意すべきことは、過度の非定義デバッグ呼び出しによるメモリの断片化で、Log4J(および他のほとんどのJavaロギングフレームワーク)で、このようなものに行き着きます。
if (log.isDebugEnabled()) {
log.debug("...");
}
というのも、(おそらく使っていないであろう)ログメッセージを構築するのは、特に何千回、何百万回と行われる場合は、高くつく可能性があるからです。
INFO レベルのロギングは、あまり "chatty" であるべきではありません (そして、あなたが言うことから、それはそうではないように聞こえます)。INFO メッセージは、アプリケーションの起動や停止のように、一般的に意味があり、重要であるべきです。問題が発生したときに知りたいと思うようなことです。デバッグ/ファインレベルのロギングは、実際に問題を診断しようとするときに、より多く使用されます。デバッグ/ファインレベルのロギングは、通常、必要なときだけオンにします。情報は通常、常にオンになっています。
もし誰かがあなたのクラスから特定のINFOメッセージを望まないならば、 それらはもちろん、それらを得ないようにあなたのlog4j構成を変更する自由があります。Log4jは、この部門で美しくまっすぐです(Java 1.4ロギングと対照的に)。
HTTPのことに関して、私は一般的に、それがJavaロギングで問題であることがわかりませんでした。一見無関係なクラス間で共通のログメッセージが必要な場合 (私の経験ではまれです)、簡単に検索できる何らかのトークンを置きます。
関連
-
StringBuilderが投げるArrayIndexOutOfBoundsExceptionの探索
-
ecplise プロンプトが表示されます。"選択したものは起動できません。" "最近の起動はありません。"
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでNullPointerExceptionを回避する方法
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] Javaで配列を宣言し、初期化する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
実行中にEclipseがポップアップする A Java Exception has occurred
-
XMLファイル操作時のjava.util.NoSuchElementExceptionを解決する方法。
-
undefined[sonar] sonar:デフォルトのスキャンルール
-
Solve モジュールのビルドに失敗しました。Error: ENOENT: no such file or directory エラー
-
シェルコマンドやスクリプトのJavaコール
-
FindBugの使用概要
-
Java基礎編 - オブジェクト指向
-
春ブート複数のデータソースの管理(atomikos)同じサーバーホスト上の複数のプロジェクトを開始する複数のJava - jarのエラーソリューション
-
org.xml.sax.SAXParseExceptionのエラー解決方法
-
アクセス制限の解決方法: ---- in Java