2011-07-11 8 views
13

アイテムが自分のasp.netキャッシュから削除されるときにログを開始したいと思います。これを行う方法と場所を把握しようとしています。asp.net-mvcで定期的にログインする必要がありますか? ELMAHを使うべきですか?

ELMAHは、アプリケーション全体の例外処理ロギングシステムに推奨されていますが、上記の例のような定期的なログ記録にも使用できますか?

答えて

9

私はELMAHとLog4Net(またはNLog)の両方を使用すると思います。両方を使用すると、最も柔軟性が得られます。私は今、極端な詳細に行くことができればいいと思っていますが、少なくとも私はあなたに答えて、両方を使っていることが私が経験したものからの最良の解決策であり、他の人が読んだことを知ってもらいたいと思っていました。説明などが必要な場合は教えてください。

5

Log4netが多数の機会に本番用ロギングを停止するまで、私たちは純粋にLog4Netの店舗でした。これを回避するために、アプリケーション全体(基本ログの場合でも)に対してELMAHを実装することにしました。すべてのログステートメントが1つの場所に表示され、トラバースするテキストファイルがなくなったため(XMLファイルをトラバースしない限り)、結果がさらに喜ばれることはありませんでした。私たちはLog4Netをもう一度繰り返すことにしましたが、ついにそれがほとんど役に立たず、アプリケーションから完全に削除しました。

特に、ELMAHは完全な可能性を実現するためにはHttpContextが必要なため、サイトに対して2つの異なるロギングフレームワークを使用することができます。しかし、我々はのHttpContextずにELMAHの例外を渡す方法を見つけました:

 /// <summary> 
     /// Main logger method that will log an exception and/or a message 
     /// </summary> 
     /// <param name="exception">Exception to log</param> 
     /// <param name="message">Message to log</param> 
     private static void Log(Exception exception, string message) 
     { 
       Error elmahError = exception != null ? new Error(exception) : new Error(); 

       if (!string.IsNullOrWhiteSpace(message)) 
       { 
        elmahError.Message = message; 
       } 

       Elmah.ErrorLog.GetDefault(null).Log(elmahError);    
     } 

は、その後、あなたのweb.configファイルにあなただけのapplicationNameを指定する必要があります。

<elmah> 
    <security allowRemoteAccess="1" /> 
    <errorLog name="ELMAHLogger" applicationName="xxx" type="Elmah.XmlFileErrorLog, Elmah" logPath="~/ELMAH_Production_Logs" /> 
    </elmah> 

を繰り返しますが、私はlog4netのだと思いますきめ細かなログ記録のフレームワークであり、何年もの間私たちのために働いていました。例外を探すときにELMAHを使いやすくするために、上記のコードでは、HttpContextが利用できないアプリケーションのどこでも使用できるようになりました。

+0

私は興味がありましたので、私はここで両方の使用に良い応答を見つけました:[ELMAHとLog4Netの両方を使う](http://stackoverflow.com/questions/800009/using-log4net-and-where-to-implement-it - と-ignign-with-elmah/800045#800045) –

+0

@Tom - そうですね、あなたは両方を使うことができますし、しばらくしましたが、私の回答は、必ずしもELMAHを使う必要はないと言っていました。すべてのあなたのロギングニーズ。 – amurra

+1

リンクごとに私は "2つの異なる目的のために使用されています。"それ以外にELMAHはウェブサイト専用ですが、一部のユーザーはLog4NetをThickクライアントアプリケーションにも使用したいと考えています。 Log4Netのような「定番」の堅実な製品に錆びつくのは、私が好むものではありません。一方、Log4netは、あなたが知っていることが分かっているイベント(例外によって引き起こされるエラーを含む)を記録するためのものです(そうでなければ、try/catchブロックはありません)。私はMVCアプリケーションでELMAHとLog4Netを使うのが好きです。しかし確かに、ソフトウェア開発は「科学」ではなく「アート」であり、 –

関連する問題