5

デスクトッププログラムのエラーと警告のログファイルを設計しようとしています。

私のプログラムがユーザーの入力ファイルを読み取るときに、構文エラーやある種の無効なデータが見つかる場合があります。すべてが読み取られ、プログラムがデータを処理していると、さらに問題が見つかる可能性があります。

これらに関するメッセージを簡単なテキストファイルに書き込みたいと思います。また、進行状況、時間、メモリ使用量などを示す情報テキストを含めることもできます。行番号と、エラーの原因となっている実際の入力行を含めることもできます。

これは、ユーザーが閲覧したいファイルになるため、適切にレイアウトされ、使いやすいものである必要があります。

このためのスタイルガイドを知っていますか、または「これでうまく設計されたログファイルです!」と思わせるエラーログファイルを見たことがありますか。


ファローアップ:

最初の3つの回答は、実際にはサーバーまたはイベントログにより適しています。

デスクトッププログラムのログファイルの形式を本当に探して、入力ファイルで見つかった問題とその処理の成功(または失敗)を詳しく説明します。

そのようなログファイルを生成する、あなたが使用したデスクトップアプリケーションがいくつかあると確信しています。良いものを見たことがありますか?

4

3 に答える 3

3

syslogおよびlog4jは、システム管理者が精通している可能性のある広く使用されている形式であり、それらを操作するためのツールがあります。独自のフォーマットを実行する前に、少なくともそれらを確認する必要があります。

Windowsの場合、ほとんどの場合、アプリケーションイベントログです。これは、テキストファイルほど好きではありませんが、正しい方法です。プログラムディレクトリなどにテキストファイルを書き込むアプリをいくつか見たことがありますが、それは常にアドホックであり、標準ではありません。たとえば、McAfee VirusScanは、C:\ Documents and Settings \ All Users \ Application Data \ McAfee\DesktopProtectionにファイルを記録します。私のマシンには、C:\ Documents and Settings \ username \ Local Settings \ temp * .logとC:\ WINDOWS \ temp*.logにたくさんのインストールログがあります。しかし、繰り返しになりますが、それらはすべて異なり、アドホックであり、目立ってうまく設計されていません

于 2010-01-22T19:26:26.077 に答える
2

私が本当に感銘を受けたログファイルはほとんどありません。実際、私は何かを考えるのに苦労しています(そして何も見つけられませんでした)。私の経験では、ログが別のプログラムや部外者(プログラマー以外)が理解できるようにフォーマットされているのではなく、内部者(プログラマー)が理解できるようにログがフォーマットされているために発生する問題があります。

重要な情報はしばしば省略されます。時には日付と時刻の情報さえ。それらを簡単に解析できるようにすることをお勧めします。'2010-01-22T10:23:21-08:00'などのISO 8601表記を使用します(タイムゾーンを含む、注)。プロセス(およびスレッド)IDを含めます。プログラム名、引数(ファイル名など)を含めることを検討します。なんらかの形でユーザーIDも含めたいと思います。これの一部は実行ごとに1回だけ必要になる場合がありますが、他のビットはメッセージごとに必要になる場合があります。これは、ログファイルが実行ごとに一意であるか、実行間で共有されるか、および単一のファイルを複数のユーザー/プロセスで使用できるかどうかに一部依存します。

次に、メッセージの内容をどのように識別するか、およびメッセージの内容の終わりを決定する必要があります。特にマシン解析(および人間による解析)の場合、コンテンツが明確にフォーマットされており、終了を検出できると便利です。コンテンツをエスケープする必要がある場合があります(これは最も頻繁に取り消される手順であるため、エラーメッセージが不正な形式のエラーメッセージに関するものである場合、ファイルからのデータとデータに関する新しいエラーメッセージを区別するのは非常に困難です。ファイル内)。マルチスレッドプログラム(またはログファイルがプロセス間で共有される可能性がある場合)では、特に長い行を処理する必要がある場合は、書き込みがどのようにバッファリングされるかを考慮する必要があります。各メッセージをログファイルで個別に分離する必要があります。

ログ用のきれいなプリンターを提供する必要があるかどうかを検討してください。

XMLベースの形式(開始タグと終了タグを含む)が役立つかどうかを検討してください。私はXMLの大ファンではありませんが、機械処理にはいくつかの利点があります。

于 2010-01-22T19:06:53.537 に答える
1

ログをcsvファイルに書き込んで、非常に便利だと思います(データベースとして使用したり、スプレッドシートソフトウェアで開いて高度な分析を行うことができます)。サンプルログファイルは次のとおりです。

Date;Time;Severity;TID;Module;This;Source;Message
2010/01/21;08:47:05:205;DEBUG;4936;MAIN;0x00000000;DllMain@36;DLL_PROCESS_ATTACH
2010/01/21;08:47:05:205;DEBUG;4936;MAIN;0x00000000;DllMain@40;DLL_PROCESS_DETACH

それがあなたのニーズに合っているかどうかはわかりませんが、あなたが主なアイデアを持っていると思います。幸運を!

于 2010-01-22T07:21:41.313 に答える