Używam log4net do logowania naszych komunikatów w witrynie sieci Web ASP.NET, a ostatnio chciałem dodać informacje o stronie/module obsługi, w którym wystąpił błąd. Postanowiłem więc dodać następującą linię do Global.asax:Jak ustawić właściwość kontekstu log4net specyficzną dla żądania ASP.NET?
void Application_BeginRequest(object sender, EventArgs e)
{
log4net.ThreadContext.Properties["page"] = HttpContext.Current.Request.AppRelativeCurrentExecutionFilePath;
}
i jak mądry dodałem %property{page}
do mojego wzór konwersji:
<conversionPattern value="%newline%date %-5level %property{page} - %message%newline%newline%newline" />
To działało w porządku dla pojedynczych żądań. Ale potem zauważyłem w moich dziennikach, że właściwość strony może się zmienić podczas żądania ASP.NET. Mam logowanie w jednej procedurze obsługi ASHX, a po jej przetworzeniu właściwość strony zmieni się na inną wartość, która wskazuje stronę ASPX. Doszedłem do wniosku, że jest inne żądanie przychodzące do ASP.NET i jego BeginRequest
zostaje wykonane, a statyczna właściwość strony w log4net.ThreadContext
zostaje zmieniona na inną wartość.
Chciałbym teraz zachować właściwość strony dla każdego żądania, aby móc konsekwentnie monitorować ścieżkę strony wykonującej logowanie do logu. Próbowałem znaleźć odpowiedź, ale wyszłam z niczym. Jaki jest zalecany sposób rozwiązania tego problemu? Jestem pewien, że jest to bardzo podstawowa funkcjonalność rejestrowania zdarzeń serwera WWW.
To jest geniusz. –