ServiceStack v4:使用NLOG配置ELMAH?

时间:2014-08-05 11:30:09

标签: servicestack elmah

您正在使用ServiceStack V4。在这里,我尝试使用AppHost construtor中的以下语句配置Elmah和NLog。

LogManager.LogFactory = new ElmahLogFactory(new NLogFactory(), new HttpApplication());

配置Elmah以记录XML文件的异常(在web.config文件中)。

每当我在服务中得到异常时,我都可以在日志文件中看到异常(为NLog配置)但在XML文件中没有(对于elmah)。

但是,如果我添加以下语句,我可以看到记录到XML文件的异常(为elmah配置)。

ServiceExceptionHandlers.Add((httpReq, request, exception) =>
{
     HttpContext context = HttpContext.Current;
     ErrorLog.GetDefault(context).Log(new Error(exception, context));
     return DtoUtils.CreateErrorResponse(request, exception);
});

但是下面的链接说我们不需要添加ServiceExceptionHandlers

How do we integrate elmah logging in servicestack

任何人都可以帮我解释我的错误。

1 个答案:

答案 0 :(得分:1)

本节介绍configuring ElmahLogging.Elmah UseCase,了解ServiceStack和Elmah的工作示例。

在初始化ServiceStack AppHost之前,应在ElmahLogFactory中配置Global.asax,例如:

public class Global : System.Web.HttpApplication
{
    protected void Application_Start(object sender, EventArgs e)
    {
        var debugMessagesLog = new ConsoleLogFactory();
        LogManager.LogFactory = new ElmahLogFactory(debugMessagesLog, this);
        new AppHost().Init();
    }
}

构造函数接受用于Debug / Info消息的备用记录器以及要在AppStartUp上记录HttpApplication实例本身的Global实例,该实例可访问在运行时HttpContext.Current.ApplicationInstance