0

私は異常なことをしています。

アプリケーションがあり、Windows サービスとして実行されます。

つまり、1 つのフォルダーを監視し、そのフォルダーに新しいファイルが配置されるたびに、アプリケーションはそのファイルに対して何かを実行します。1 つのファイルの処理中にエラーが発生した場合。テキスト ファイルを作成し、エラー/例外情報をそのテキスト ファイルに入れる必要があります。(後でこのファイルで何かをすることができます)

だからこういうのがある

FileWatch, when there is a new file, do following :
     try
     {
         processing file
     }
     catch(Exception ex)
     {
         MyLogger write exception message into one new text file
     }

これまでのところ、私はそれをどのように行ったかです。MyLogger などのクラスを作成します。新しい MyLogger を作成するたびに、テキスト ファイルが作成されます (名前は重要で、特定の形式である必要があります)。そのファイルにテキスト。

アプリケーションでlog4netを使用したため。ロガーを変更して、log4net からいくつかのクラスを拡張する必要があると思いますか? (どのようなメリットがあるかはわかりませんが、log4net は優れたロギング フレームワークです。テキスト ファイルの処理方法には、私が認識していないことがあります)

ありがとう

4

5 に答える 5

2

log4net またはその他の汎用ロガーは、次の場合に役立ちます
。1) アプリケーション全体の多くの場所で一貫したログ機能を使用する場合。および/または
2) ログ形式、レベルなどをカスタマイズする機能が必要です。

あなたの説明から、アプリには特定の方法で例外を記録する必要がある単一のポイントがあるように思えます。これが正しければ、おそらくカスタム ロガーを作成しても何のメリットもありません。必要な方法で例外をファイルに記録するメソッドを作成するだけです。

私があなたを誤解していて、汎用ロガーが必要な場合 (つまり、上記の 1) または 2) が真である場合)、ロガーを継承するかラッパーを作成して log4net を拡張することは問題ありません。

于 2010-11-03T10:37:23.080 に答える
1

以前にlog4netラッパーを作成しました。プロジェクトの開始時にロギング要件が何であるかを常に知っているとは限らないため、この方法で開始すると便利です。私のルールでは、log4netライブラリは自分の「logging」名前空間からのみ参照できます。このように、アプリケーションコードはラッパーのみを呼び出し、ラッパーはlog4net機能への唯一の連絡先です。

長期的には、独自のロガーを構築するために投資する価値があるでしょう。log4netを適切にカプセル化すると、コードを変更することなく、このアップグレードをかなり簡単に行うことができるはずです。

于 2010-11-03T05:31:30.327 に答える
0

自分のやりたいことを正確に実行する独自のロガーを作成するために、ある程度の時間を費やす必要があります。これが最善の方法です。また、かなり簡単で、カスタマイズを完全に制御できるため、log4netのように出力のルックアンドフィールを作成できます。Googleでサンプルをログに記録し、そのサンプルの変更を開始できます。

于 2010-11-03T05:12:19.693 に答える
0

この目的でログ フレームワークを使用するかどうかはわかりません。例外ケースでこのテキスト ファイルを書き込むことは、ビジネス プロセスの一部であるという印象を受けます。ロギングは、ビジネス プロセスに影響を与えずにオフにできる別の目的を果たします...

于 2010-11-03T10:25:43.053 に答える
0

.NET フレームワークのTrace Listenerを使用しないのはなぜですか? これらは、外部フレームワークを組み込む必要なく、ロギング ネットワークの多くの利点を提供します。

利点には、一元化されたログ管理と、コンソール ウィンドウ、テキスト ファイル、または Windows イベント ログなどの 1 つ以上のソースに出力ログを送信する機能が含まれます。

于 2010-11-03T04:49:39.303 に答える