您正在使用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
任何人都可以帮我解释我的错误。
答案 0 :(得分:1)
本节介绍configuring Elmah和Logging.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
。