1

文脈から始めましょう!

仕事で、ASP.NET の Web アプリであるプロジェクトにログ機能を追加するように依頼されました。

私が考えたのは、自分のプロジェクトのためだけにそれを行うこともできたのですが、それはあまり役に立ちません! そのため、他のプロジェクト (webapps または windows アプリ) で使用できる DLL を作成したいと考えています。

そこで、次の機能を計画しました。

  • 構成用の XML ファイル : ファイルの LogLevel、ファイルの場所、保持する時間、新しいログ ファイルに書き込む前の最大サイズ。たとえば、ERROR および CRITICAL ログのみが書き込まれるログ ファイルと、INFO および WARNING LOGS が書き込まれる別のファイルを作成できます。

    • Web アプリまたは Win アプリのログを記録する機能

しかし、ここに問題があります。うまくいかない可能性のあるさまざまなことを考えています。開発する前に、自分が何をしているのかを確認したかったのです。

まず、それが Web アプリケーションか Windows アプリケーションかを検出する必要があります。このような役立つものをいくつか見つけました

次に、ログがどのように書き込まれるかを考えています。ログの行を書き込むたびに、ファイルを開いたり閉じたりする必要があります。パフォーマンスにすごく欲張りな気がします。私が間違っている ?それを行う他の方法はありますか?

また、Web アプリケーションまたはマルチスレッド Windows アプリケーションの両方からログを記録するときに問題が発生する可能性があることにも注意してください。もう 1 つの問題は、log メソッドが一度に 2 回 (2 回) 呼び出される可能性があることです。これにより、ログ ファイルへの同時アクセスの問題が発生します。これらの問題に対処する最善の方法は何ですか?

最後に、この種の dll で問題になる可能性があるものは他にもありますか?

ご協力いただきありがとうございます !:)

4

2 に答える 2

0

ELMAH https://elmah.github.io/ またはSerilog を試すことができます : https://serilog.net/ どちらも log4net (おそらく log4net より少ない) として「クラシック」です。前の回答が言ったように、ホイールを再発明することには、おそらく一種のコーディングの楽しみを除いて、何の利益もありません。

于 2017-01-04T16:08:10.233 に答える