5

私の質問はこの質問に由来します。コメントの1つは、DEBUGログレベルがTRACEよりもきめ細かいことを示唆しています。.NETでTRACEとDEBUGが何を意味するかを見ると、これは理にかなっているように見えます。なぜなら、定義上、DEBUG(概念として)は本番環境では決して見られないからです。これが、エンタープライズライブラリでイベントタイプとして使用されていない理由である可能性があります。一方、私が知っている他のすべての実装(log4net、nlog、common.logging)には、DEBUGよりも細かいレベルとしてTRACEがあります。つまり、DEBUGログレベルで実行されているアプリケーションは、TRACEログを書き込みません。

独自のログフレームワークを実装する必要がありますが、DEBUGが本当に最も「スパム」なログレベルであると考える人がもっといるのではないかと思いました。それとも、新しいフレームワークが新しい開発者などに使いやすい親しみを提供する必要がある場合、これは間違いだと思いますか?

ありがとう。

4

2 に答える 2

4

TRACEがDEBUGよりも細かいことに同意します。

例:PostSharpを使用して、アプリケーションの各メソッド呼び出しに自動ロギングステートメントを追加した場合、このコードを各メソッドの先頭に挿入する必要があります。

if (Log.IsTraceEnabled)
   Log.TraceFromat("Method {0} args {1}", method, string.Join(",", args));

つまり、レベル「TRACE」は、アプリケーションを介して呼び出しをトレースするのに役立つと解釈しますが、DEBUGは、開発者がプロ​​グラムの動作をデバッグするのに役立つ情報を書き込んでいます。それが理にかなっているかどうかわかりませんか?

于 2012-06-25T08:52:37.420 に答える
4

log4netはJavaの世界から来ており、NLogはlog4netから多くのアイデアを取り入れていることを忘れないでください。したがって、トレースとデバッグは、.NET Frameworkデザイナーのロギングの世界観に基づいていないため、これらのフレームワークでは異なります。 System.Diagnostics名前空間。

デバッグ情報を表示するために(TRACEコンパイラ指令またはweb.configで)トレースを有効にするため、.NETのトレースは.NETの世界のデバッグと同義であると思います。

明らかに、NLogとLog4Netでは、情報の重大度がわずかに異なると解釈される場合がありますが、どちらもシステムエラーではなくバグの追跡に使用されるため、基本的に同じ意味になります。

于 2012-06-25T09:11:06.487 に答える