Log4netを使用してmvcWebアプリで発生しているすべての未処理の例外をログに記録する方法に関するチュートリアルまたはサンプルをいくつか教えてください。ありがとうございました
今のところ満足しているように見えるglobal.asaxで使用しているコードの下に貼り付けます。log4netで生成されたログファイルで未処理の例外がすべて発生します。
public class MvcApplication : System.Web.HttpApplication
{
private static readonly ILog log = LogManager.GetLogger(typeof(MvcApplication));
void Application_Error(Object sender, EventArgs e)
{
Exception ex = Server.GetLastError().GetBaseException();
log.Error("App_Error", ex);
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" }
);
}
protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
log4net.Config.XmlConfigurator.Configure();
}
}
ASP.NETアプリケーションの場合、System.Web.HttpApplication.Error
ファイルに配置されるGlobal.asax
イベントを使用します。
protected void Application_Error(Object sender, EventArgs e)
{
Exception ex = Server.GetLastError();
// Stop error from displaying on the client browser
Context.ClearError();
logger.Fatal(ex.ToString);
}
監視 未処理の例外の管理
アスペクト指向プログラミング (AOP)とは何かを確認することをお勧めします。
これは ポストシャープ (のみ-log4netではなくカスタムトレーサーを使用しました)で実現しました。
Log4netにこの「すぐに使える」ものがない場合は、最初にチェックしてください。それについてはよくわかりません。
Log4netには、これに対する組み込みのサポートはありません。 Global.asaxに Application_Errorイベント を実装し、そこでlog4netロガーを呼び出す必要があります。イベントは、アプリ内の未処理のすべてのイベントに対してトリガーされます。
面白くなく ここに行きます 。
try
{
NotImplementedException nie = new NotImplementedException();
throw nie;
}
catch (Exception e)
{
Log.Fatal(e);
}
.net 3.5を使用していると仮定すると、拡張メソッドを使用し、System.Exceptionを拡張してLog(log4net.ILog log)メソッドを追加し、Logインスタンスを正しく設定していれば、アプリで例外が発生した場合はいつでも追加できます。 、そしてあなたはそれを簡単に行うことができます。拡張クラスはかなり大きくなる可能性があり、Debug、Info、Warn、Error、Fatalなどのさまざまなオーバーロードが発生します。