Jestem nowym użytkownikiem serwisu servicestack i elman.W jaki sposób integrujemy logowanie elma w servicestack
Czy jakiekolwiek ciało sugeruje, w jaki sposób możemy zintegrować elmah w aplikacjach stosu usług.
Dziękuję ...
Jestem nowym użytkownikiem serwisu servicestack i elman.W jaki sposób integrujemy logowanie elma w servicestack
Czy jakiekolwiek ciało sugeruje, w jaki sposób możemy zintegrować elmah w aplikacjach stosu usług.
Dziękuję ...
Jeśli masz już rozwiązanie rejestrowania można użyć projektu ServiceStack.Logging.Elmah. Jest dostępny przez NuGet.
Wyjątki, błędy i połączenia śmiertelne będą rejestrowane w Elmah oprócz pierwotnie zamierzonego rejestratora. W przypadku wszystkich pozostałych typów dzienników używany jest tylko oryginalny program rejestrujący.
Więc jeśli już przy użyciu log4net następnie można po prostu skonfigurować ELMAH jak ten
ElmahLogFactory factory = new ElmahLogFactory(new Log4NetFactory());
Jeśli nie chcesz, by zakończyć się na istniejącym dzienniku wtedy można tylko badania dodając ELMAH do dowolnego ASP. Strona internetowa NET. Nie ma powodu, żeby to nie działało tylko dlatego, że używasz 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
}
}
Teraz twój błąd ServiceStack pojawiają się w Elmah (przy założeniu, że masz skonfigurowany web.config itp).
Właściwie odpowiedź kampsj jest lepsza niż Gavina, ponieważ Gavins powoduje podwójne logowanie do elmah, wywołując jawny rejestrator elmah, a następnie domyślną obsługę błędów servicestack ... która sama już dokonuje rejestrowania.
Tak naprawdę wszystko, co potrzebne jest to (poniżej zakładając chcesz owinąć nlog z 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...
}
Można tylko mieć ten powyżej:
ElmahLogFactory factory = new ElmahLogFactory();
... ale prawdopodobnie powinien zawinąć inny typ rejestratora dla rejestrowania błędów, takich jak Debugowanie i Ostrzeganie.
Ta sekcja na temat configuring Elmah i Logging.Elmah UseCase dla działającego przykładu skonfigurowanych razem usług ServiceStack i Elmah.
ElmahLogFactory
można skonfigurować w swojej Global.asax
przed inicjowania ServiceStack AppHost, np:
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();
}
}
Wystarczy być jasne, odpowiedź powyżej wykorzystuje pojedynczy punkt wejścia do wyjątków ... https: // github .com/ServiceStack/ServiceStack/wiki/Obsługa błędów – Darren