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. 服務堆棧集HttpCookie.Secure標誌/屬性?
- 6. 如何將日誌整合到.NET代碼合同中
- 7. 如何使Topshelf日誌例外到Elmah
- 8. JVM日誌堆棧跟蹤
- 9. 僅使用ServiceStack日誌記錄而沒有整個Web服務堆棧
- 10. 我如何整合hadoop日誌?
- 11. 將服務堆棧集成到自定義服務器中
- 12. 我的Web服務,他們的XSD。如何整合它們?
- 13. 用於將日誌文件加載到cassandra中的堆棧
- 14. 如何從ELMAH日誌中刪除「Auth_Password」
- 15. Glassfish v3 - 如何禁用服務器端日誌上的堆棧跟蹤
- 16. 回溯日誌中的堆棧幀NULL
- 17. 如何讓所有參數發送到服務堆棧服務?
- 18. 在Spark日誌中獲取完整堆棧跟蹤
- 19. 分析elmah日誌
- 20. 如何打印堆棧跟蹤到Cocoa的控制檯/日誌?
- 21. Rails 3:如何在服務器日誌中顯示500條內部服務器錯誤時的堆棧跟蹤?
- 22. 如何rasie存儲在elk堆棧中的日誌的日誌級別
- 23. 碼頭堆棧羣 - 服務副本沒有傳播到Mutli服務堆棧
- 24. 將服務引用整合到C#中
- 25. 如何打印堆棧跟蹤日誌文件中
- 26. 如何在MEAN堆棧中執行日誌記錄
- 27. 日誌不打印完整的堆棧跟蹤
- 28. 將Web API 2和服務堆棧合併到一個應用程序中
- 29. Elmah日誌條目不包括服務器變量
- 30. 針對Windows服務的ELMAH錯誤日誌記錄
只是要清楚,答案上面使用異常單一入口點... https://開頭的github .COM/ServiceStack/ServiceStack /維基/錯誤處理 – Darren