2009-03-17 3 views
1

私は以前の開発者から継承したASP.NET 2.0 Webサイトにログを追加したいと思います。アプリケーションは、例外が発生したときに例外を吐き出し、実行された金融取引の記録はありません。ASP.NETのための最も効率的でパフォーマンスの良いロギングソリューションは何ですか?

私は過去に使ったLog4netとNLogとBitFactoryを見てきました。私が本当に知る必要があるのは、SharePoint内で動作するアプリケーションでロギングフレームワークを最適に実装する方法です。私はアプリケーションを駄目にしないものが必要です。

一般的に受け入れられるASP.NET用のログパターンはありますか?どのようにあなたのWebサイトにログインを実装しましたか?

答えて

4

多くのASP.NETアプリケーションで使用するシステムは、ELMAH(エラーログモジュールとハンドラ)です。あなたが望むすべての機能を提供するかどうかはわかりませんが、本当に気に入っているのは、処理されない例外が発生したときに、Yellow Screen of Deathを取得し、電子メールでスタックトレースを取得することです。

+0

男、それは本当に素晴らしいです。ありがとう! –

0

私が見つけた最高のものはlog4.netです。未処理のエラーをログに記録し、ASP.NETをデバッグするために使用します。それは小さく、クラッシュしません。私たちはかなり大きなサイトでそれを使用し、私は再びそれを使用します。

+0

私はあなたが私の質問を完全に読んだとは思わない。 –

+0

確かに私はしました。私は、あなたがlog4netをその目的のために使用し、うまく動作していることを伝えて、log4netをセカンダリしていました。あなたは「どのようにあなたのWebサイトにログインを実装しましたか」と尋ねました。それが私が答えようとしていたものでした。 –

1

ログの記録は、ログを記録しないよりも遅くなります。ロギングはパフォーマンスに関するものではなく、信頼性とリカバリに関するものです。最高のログ記録のフレームワークは宗教的に使用するもので、最悪のものは使用しないものです。

私たちのアプリケーションではlog4netを使用していますが、苦情はありません。私が微調整したいことがありますか?確かに。しかし、私たちは伐採事業に携わっていないので、クライアント用のアプリケーションを作成するので、信頼性の高いロギングシステムが必要になり、log4netが適合します。

このように、私たちはデバッグログを確認するためにデバッグログをラップします。そしてはコアの​​中でのみとなりました。典型的なif (log.isDebugEnabled)チェックを超えて、各ifステートメントの独自の静的変数チェックで追加されました。私たちは本当に我々が

#region Log4Net 
const string c_EnableDebugLogging = "com.techsoftinc.BusinessObjectsCore.EnableDebugLogging"; 
static readonly bool _EnableDebugLogging = Convert.ToBoolean(ConfigurationManager.AppSettings[c_EnableDebugLogging] ?? "false"); 

static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 

//Do we support ultrafast logging? See What is REALLY the FASTEST way of (not) logging? in http://logging.apache.org/log4net/release/faq.html 
static bool debugLogging 
{ 
    get { return _EnableDebugLogging && log.IsDebugEnabled; } 
} 
#endregion 

を持っていると我々はデバッグしたいときに、我々は(例えば)持っている(私たちのORMまたは他のインフラストラクチャの作品のほとんどの部分)の性能を気モジュールの上部に

if (debugLogging) 
    log.DebugFormat("Executing sql: {0}", sql); 

_EnableDebugLoggingがfalseの場合、JITはdebugLogging関数をfalseに折りたたんで、if (debugLogging)ステートメント全体を削除します。 JITは、必要がなければ、そのままデバッグロギングをフロアに落としています。

* reliable ==は、私たちが遭遇したすべての状況でうまく機能します。信頼できるというのは、コンピュータサイエンスの意味で信頼できるものではありません。

関連する問題