73

C++ でのコーディングから C# への切り替えを行っています。C++ エラー ログ/レポート マクロ システムを、C# のようなものに置き換える必要があります。

私のC++ソースでは、私は書くことができます

LOGERR("何らかのエラー"); または LOGERR("入力 %s および %d のエラー", stringvar, intvar);

マクロとサポート ライブラリ コードは、(場合によっては varargs) 形式のメッセージを、ソース ファイル、ソース行、ユーザー名、および時刻と共にデータベースに渡します。後でユーザーに報告するために、同じデータがデータ構造にも詰め込まれます。

この基本的なエラー報告/ログ記録を行う C# コード スニペットまたは例へのポインタを持っている人はいますか?

編集: この質問をした時点で、私は .NET を初めて使用し、System.Diagnostics.Trace を認識していませんでした。System.Diagnostics.Trace は、当時私が必要としていたものでした。それ以来、ロギング要件がより大きく複雑なプロジェクトで log4net を使用してきました。その 500 行の XML 構成ファイルを編集するだけで、log4net は必要なことすべてを実行します:)

4

15 に答える 15

73

多くの log4net 支持者がここにいるので、これは無視されると確信していますが、私自身の好みを追加します。

System.Diagnostics.Trace

これには、Trace()メソッドをリッスンし、ログ ファイル/出力ウィンドウ/イベント ログに書き込むリスナーが含まれます。含まれているフレームワークのリスナーはDefaultTraceListenerTextWriterTraceListenerおよびEventLogTraceListener. レベル (警告、エラー、情報) とカテゴリを指定できます。

MSDN の Trace クラス
Web アプリケーションのイベント ログへの
書き込み UdpTraceListener - log4net 互換の XML メッセージを log2console などのログ ビューアーに書き込みます。

于 2008-09-29T09:41:56.560 に答える
41

log4Netを見ることを強くお勧めします。この投稿では、開始するために必要なものの大部分をカバーしています。

于 2008-09-29T04:59:22.793 に答える
14

私は、Object Guy の Logging Frameworkを使用しています。これを試しているほとんどの人がそうであるようにです。この人はそれについて興味深いコメントをしています。

于 2009-02-08T04:17:04.940 に答える
14

もう 1 つの優れたログ ライブラリはNLogで、ファイル、データベース、イベント ロガーなど、さまざまな場所にログを記録できます。

于 2008-09-29T09:38:50.593 に答える
11

Enterprise Librarylog4netの確実な代替手段であり、他にも多数の機能 (キャッシュ、例外処理、検証など) を提供します。私が構築するほぼすべてのプロジェクトで使用します。

強くお勧めします。

于 2008-09-29T05:08:41.897 に答える
5

個人的には嫌いですが、log4netは C# ロギングのデファクト スタンダードのようです。使用例:

log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program));
log.Error(“Some error”);
log.ErrorFormat("Error with inputs {0} and {1}", stringvar, intvar);
于 2008-09-29T04:59:15.947 に答える
5

別のスレッドで述べたように、私たちは数年間、複数の本番アプリでThe Object Guy の Logging Frameworkを使用してきました。使い方も拡張もとても簡単です。

于 2009-08-11T01:35:07.913 に答える
3

Log4Netは、さまざまなレベル (デバッグ、エラー、致命的) にログを記録し、これらのログ ステートメントをさまざまな場所 (ローリング ファイル、Web サービス、Windows エラー) に出力できる、かなり包括的なログ フレームワークです。

ロガーのインスタンスを作成することで、どこでも簡単にログを記録できます

private static readonly ILog _log = LogManager.GetLogger(typeof([Class Name]));

次に、エラーをログに記録します。

_log.Error("Error messsage", ex);
于 2008-09-29T05:00:53.663 に答える
2

組み込みの .NET ログを使用できます。TraceSource と TraceListeners を調べてください。これらは .config ファイルで構成できます。

于 2008-09-29T15:24:04.150 に答える
1

log4netの同上。実際に使用する場合は、いくつかのオープンソース実装を調べて、いくつかの便利な追加機能を備えた実際のコードサンプルを確認するのが理にかなっているため、2ビットを追加しています。log4netの場合は、頭のてっぺんからサブテキストを確認することをお勧めします。特に、アプリケーションの開始ビットとアセンブリ情報ビットを見てください。

于 2008-09-29T05:35:46.917 に答える
1

System.Diagnosticsに組み込まれているトレースは、.NET Frameworkで問題なく、多くのアプリケーションで使用しています。ただし、私がまだlog4netを使用している主な理由の1つは、組み込みの.NET Frameworkトレースに、log4netがすでに組み込みで提供している便利なフル機能のアペンダーの多くが欠けていることです。

たとえば、.NET Frameworkで定義されている適切なローリングファイルトレースリスナーは、VB.NET dllにあるもの以外にはありません。これは、実際にはそれほど完全な機能ではありません。

開発環境によっては、サードパーティのツールが利用できない場合を除いてlog4netを使用することをお勧めします。その場合は、System.Diagnosticsトレースクラスを使用することをお勧めします。より優れたアペンダー/トレースリスナーが本当に必要な場合は、いつでも自分で実装できます。

たとえば、多くのお客様は、企業のマシンにインストールするときにオープンソースライブラリを使用しないことを要求しているため、その場合は.NETFrameworkトレースクラスが最適です。

さらに、-http : //www.postsharp.org/は私が調べているAOPライブラリであり、コードプロジェクトでここに示されているようにロギングにも役立つ可能性があります:http://www.codeproject.com/KB/dotnet/log4postsharp- intro.aspx

于 2009-09-28T19:56:05.293 に答える
1

ログに System.Diagnostics メソッドを使用することに関連するいくつかのコメントに加えて、 DebugViewツールは、必要に応じてデバッグ出力をチェックするのに非常に便利であることも指摘したいと思います。アプリでログ ファイルを生成するには、必要に応じて DebugView を起動するだけです。

于 2008-09-29T13:01:57.203 に答える
0

他の人が言ったように、Log4Net はかなり一般的で、Log4j に似ています。

Logging Application Block http://www.codeproject.com/KB/architecture/GetStartedLoggingBlock.aspxを使用するオプションもあります。

于 2008-09-29T14:58:11.013 に答える