5
A
回答
4
如果你有一个现有的记录解决方案,那么你可以使用ServiceStack.Logging.Elmah项目。它可以通过NuGet获得。
除最初预定的记录器外,异常,错误和致命的调用将记录到Elmah。对于所有其他日志类型,仅使用原始日志记录器。
所以,如果你已经使用log4net的,那么你可以像这样
ElmahLogFactory factory = new ElmahLogFactory(new Log4NetFactory());
配置ELMAH如果您不想在现有的日志那么你可以加入研究ELMAH任何ASP包裹英寸NET网站。没有理由不会因为您使用ServiceStack而无法正常工作。
3
using ServiceStack.Logging;
using ServiceStack.Logging.Elmah;
using ServiceStack.Logging.NLogger;
public AppHost()
: base(
"description",
typeof(MyService).Assembly)
{
LogManager.LogFactory = new ElmahLogFactory(new NLogFactory());
}
public override void Configure(Container container)
{
this.ServiceExceptionHandler += (request, exception) =>
{
// log your exceptions here
HttpContext context = HttpContext.Current;
ErrorLog.GetDefault(context).Log(new Error(exception, context));
// call default exception handler or prepare your own custom response
return DtoUtils.HandleException(this, request, exception);
};
// rest of your config
}
}
现在你的ServiceStack错误出现在Elmah中(假设你已经设置了web.config等)。
2
其实kampsj的答案比Gavin的更好,因为Gavins通过调用显式elmah记录器,然后默认的服务堆错误处理...本身已经做了日志记录,导致双重记录到elmah。
所以真的所有你需要的是这样的(以下假设你想包装NLOG与ELMAH)
public class YourAppHost : AppHostBase
{
public YourAppHost() //Tell ServiceStack the name and where to find your web services
: base("YourAppName", typeof(YourService).Assembly)
{
LogManager.LogFactory = new ElmahLogFactory(new NLogFactory());
}
//...just normal stuff...
}
你可能只是有这个上面:
ElmahLogFactory factory = new ElmahLogFactory();
...但你可能应该为非错误日志记录封装另一种类型的记录器,如“调试”和“警告”。
0
这一节关于configuring Elmah和Logging.Elmah UseCase的ServiceStack和Elmah的一个工作示例配置在一起。
的ElmahLogFactory
可以在Global.asax
进行配置,如前初始化ServiceStack APPHOST:
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();
}
}
相关问题
- 1. 如何将完整的堆栈跟踪写入日志?
- 2. 日志和ELK堆栈在不同的服务器上,如何显示日志?
- 3. 如何将堆栈跟踪打印到日志文件中?
- 4. ELK堆栈 - 如何将所有旧日志回填到elasticsearch?
- 5. 如何将日志整合到.NET代码合同中
- 6. 如何使Topshelf日志例外到Elmah
- 7. JVM日志堆栈跟踪
- 8. 仅使用ServiceStack日志记录而没有整个Web服务堆栈
- 9. 我如何整合hadoop日志?
- 10. 将服务堆栈集成到自定义服务器中
- 11. 我的Web服务,他们的XSD。如何整合它们?
- 12. 用于将日志文件加载到cassandra中的堆栈
- 13. 如何从ELMAH日志中删除“Auth_Password”
- 14. Glassfish v3 - 如何禁用服务器端日志上的堆栈跟踪
- 15. 回溯日志中的堆栈帧NULL
- 16. 如何让所有参数发送到服务堆栈服务?
- 17. 在Spark日志中获取完整堆栈跟踪
- 18. 分析elmah日志
- 19. 如何打印堆栈跟踪到Cocoa的控制台/日志?
- 20. Rails 3:如何在服务器日志中显示500条内部服务器错误时的堆栈跟踪?
- 21. 码头堆栈群 - 服务副本没有传播到Mutli服务堆栈
- 22. 将服务引用整合到C#中
- 23. 如何打印堆栈跟踪日志文件中
- 24. 如何在MEAN堆栈中执行日志记录
- 25. 日志不打印完整的堆栈跟踪
- 26. 将Web API 2和服务堆栈合并到一个应用程序中
- 27. 日志的清理堆栈跟踪
- 28. 日志堆栈跟踪的Play应用
- 29. 应用程序日志堆栈
- 30. DynamoDB堆栈类型日志记录
只是要清楚,答案上面使用异常单一入口点... https://开头的github .COM/ServiceStack/ServiceStack /维基/错误处理 – Darren