Tôi mới sử dụng tính năng ghi nhật ký servicestack và elman.Làm thế nào để chúng tôi tích hợp đăng nhập elmah vào servicestack
Bất kỳ cơ thể nào cũng có thể đề xuất cách chúng tôi tích hợp elmah trong các ứng dụng ngăn xếp dịch vụ.
Cảm ơn bạn ...
Tôi mới sử dụng tính năng ghi nhật ký servicestack và elman.Làm thế nào để chúng tôi tích hợp đăng nhập elmah vào servicestack
Bất kỳ cơ thể nào cũng có thể đề xuất cách chúng tôi tích hợp elmah trong các ứng dụng ngăn xếp dịch vụ.
Cảm ơn bạn ...
Nếu bạn có một giải pháp khai thác gỗ hiện tại sau đó bạn có thể sử dụng các dự án ServiceStack.Logging.Elmah. Nó có sẵn thông qua NuGet.
Trường hợp ngoại lệ, lỗi và cuộc gọi gây tử vong sẽ được ghi vào Elmah ngoài trình ghi nhật ký dự định ban đầu. Đối với tất cả các loại nhật ký khác, chỉ sử dụng trình ghi nhật ký gốc.
Vì vậy, nếu bạn đang sử dụng Log4Net sau đó bạn chỉ có thể cấu hình như thế này ELMAH
ElmahLogFactory factory = new ElmahLogFactory(new Log4NetFactory());
Nếu bạn không muốn quấn trong hơn một bản ghi hiện tại sau đó bạn chỉ có thể nghiên cứu thêm ELMAH cho bất kỳ ASP. Trang web NET. Không có lý do nó sẽ không hoạt động chỉ vì bạn đang sử dụng ServiceStack.
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
}
}
Bây giờ lỗi ServiceStack của bạn sẽ xuất hiện ở Elmah (giả sử bạn đã thiết lập web.config, v.v.).
Thực tế câu trả lời của kampsj tốt hơn Gavin vì Gavins gây ra việc đăng nhập đôi vào elmah bằng cách gọi trình ghi nhật ký elmah rõ ràng và sau đó xử lý lỗi servicestack mặc định ... mà chính nó đã ghi nhật ký.
Vì vậy, thực sự bạn chỉ cần có này (sau đây giả sử bạn muốn bọc NLog với 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...
}
Bạn chỉ có thể có điều này trên:
ElmahLogFactory factory = new ElmahLogFactory();
... nhưng bạn có lẽ nên bọc một loại logger khác để ghi nhật ký không lỗi, như Debug và Warn.
Phần này trên configuring Elmah và Logging.Elmah UseCase cho ví dụ hoạt động của ServiceStack và Elmah được định cấu hình cùng nhau.
Các ElmahLogFactory
có thể được cấu hình trong Global.asax
của bạn trước khi khởi tạo ServiceStack AppHost, ví dụ:
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();
}
}
Chỉ cần được rõ ràng, câu trả lời ở trên là sử dụng một điểm vào duy nhất cho trường hợp ngoại lệ ... https: // github .com/ServiceStack/ServiceStack/wiki/Xử lý lỗi – Darren