0

ログファイルをファイルシステムに書き込むアプリケーションがあり、後でそれらのログをRDBMSにダンプして、特定のアイテムを簡単にクエリできるようにしたい場合(たとえば、トランザクションID Xに関連するすべてのログをクエリしたい場合) 、ログレベルがINFOであるか、ある日付以降のすべてのクエリのようにクエリを実行するだけではありません)。

ログメッセージをRDBMSに簡単に配置して、実際にログに記録しているものを将来変更できるようにする(さらに追加する)ことができるように、ログメッセージをフォーマットする堅牢な方法は何ですか?

4

1 に答える 1

0

ログエントリの属性を名前と値のペアとしてコーディングします。値の部分の区切り文字について選択する必要があります。つまり、値自体には表示されないものである必要があります。

問題のその部分について考えていない場合は、ログエントリのいくつかの属性:

  • タイムスタンプ
  • 重大度(致命的、エラー、情報、デバッグ)、おそらく文字列として
  • ファイル名と行番号、および/またはクラス名とメソッド名としての、エントリが作成されたソースコード内の場所
  • 取引
  • フリーテキスト:コードがエントリに記録する必要があるものは何でも

また、考慮してください:

  • スタックトレース:不特定の反復になる傾向があるため、厄介です
  • ランタイムによって提供される例外情報(C#?Java?)
  • ユーザーID
  • スレッド情報

区切り文字の選択と競合するのは、そのフリーテキスト属性です。

区切り文字として二重角かっこを使用したおもちゃの例のログエントリ:

timemstamp=[[24-Apr-2012 15:48:28.749]] severity=[[error]] location=[[Foo.java (45)]] transaction=[[48241]] free=[[Cannot open file 'zqx3.txt']]

あなたの質問は実装言語でタグ付けされていません。Javaの世界では、log4jはロギング用の一般的なフレームワークです。.NETには適切なポートまたは類似のものがあると思います。

単純なログファイル形式も参照してください。

于 2012-05-08T18:07:04.800 に答える