11

私の質問は簡単です。ログに何を書き込むかです。規約はありますか?何を入れればいいですか?

私のアプリはリリースする必要があるので、わかりやすいログが必要です。これは、ほとんどの人がそれが何であるかを尋ねることなく読むことができます。

タイムスタンプ、各関数/メソッドの一意の識別子など、すでにいくつかのアイデアがあります。トレース/デバッグ、情報、エラー/警告など、いくつかのログレベルが必要です。

フォーマット済みのログ リソースを使用していますか?

ありがとうございました

4

7 に答える 7

9

コンテンツに関するいくつかの提案を次に示します。

  • タイムスタンプ
  • メッセージ
  • ログ メッセージの種類 (エラー、警告、トレース、デバッグなど)
  • スレッド ID (マルチスレッド アプリケーションからログ ファイルを理解できるようにするため)

実装のベスト プラクティス:

  • 書き込みメソッドの周りにミューテックスを配置して、各書き込みがスレッドセーフであり、意味があることを確認できるようにします。
  • 一度に 1 つのメッセージをログ ファイルに送信し、毎回ログ メッセージのタイプを指定します。次に、プログラムの起動時に取得するログの種類を設定できます。
  • ファイルでバッファリングを使用しないか、プログラムがクラッシュした場合に備えて頻繁にフラッシュします。

編集:質問がPythonでタグ付けされていることに気付いたので、私の前にS. Lottの回答をご覧ください。あなたのニーズには十分かもしれません。

于 2009-04-23T01:44:15.993 に答える
1

質問にpythonのタグを付けたので、この質問も参照します。内容はブライアンの提案がいいです。ただし、共有ログを使用している場合は、プログラム名を追加することを忘れないでください。

ログファイルで重要なのは「greppability」です。特定の条件に対して一意の(基数でも)適切な文字列識別子を使用して、すべての情報を1行で提供するようにしてください。タイムスタンプについては、うまく並べ替えられるISO-8601標準を使用してください。

于 2009-04-23T01:48:47.527 に答える
1

ログ分析ソフトウェアを調べることをお勧めします。独自に作成する予定がない限り、Analogなどの既存のログ分析パッケージを利用することをお勧めします。その場合は、受け入れる形式と十分に類似したログ出力を生成することをお勧めします。最小限の労力で素敵なチャートやグラフを作成できます!

于 2009-04-23T02:17:39.533 に答える
1

私の意見では、 log4j (または他の言語のバリエーション)などの既存のロギング ライブラリを使用するのが最善の方法です。メッセージのフォーマット方法を制御でき、コードに触れることなく変更できます。ベスト プラクティスに従っており、堅牢で、何百万人ものユーザーに使用されています。もちろん、独自のロギング フレームワークを作成することもできますが、非常に具体的なものが必要でない限り、それを行うのは非常に奇妙なことです。いずれにせよ、それらのドキュメントに目を通して、ログ ステートメントがどのように表示されるかを確認してください。

log4py を確認してください - log4j の Python 移植バージョン。Python の実装がいくつかあると思います。

于 2009-04-23T08:48:56.910 に答える
0

Python のロギング ライブラリは、単一プロセス スレッドに対してスレッドセーフです。

于 2010-01-11T16:31:06.277 に答える
-1

timeStamp ie DateTime YYYY / MM / DD:HH:mm:ss:msユーザースレッドID関数名メッセージ/エラーメッセージ/成功メッセージ/関数トレース

これをXML形式にすると、パーサーを簡単に作成できます。

<log>
  <logEntry DebugLevel="0|1|2|3|4|5....">
    <TimeStamp format="YYYY/MM/DD:HH:mm:ss:ms" value="2009/04/22:14:12:33:120" />
    <ThreadId value="" />
    <FunctionName value="" />
    <Message type="Error|Success|Failure|Status|Trace">
      Your message goes here
    </Message> 
  </logEntry>
</log>
于 2009-04-23T01:57:03.203 に答える