zgodnie z dokumentacją log4net here (poszukaj w log4net.Core.ILogger
), można użyć dziennika metoda na interfejsie ILogger.
private static ILog logger =
LogManager.GetLogger(
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
logger.Logger.Log(logger.GetType(),LogLevel.Debug,"Something went wrong", ex);
Parametr Typ jest używany przez funkcję log4net do określenia granicy stosu wywołań między kodem logowania a kodem aplikacji. Jeśli włączone jest rejestrowanie nazw metod, to log4net nawiguje w górę stosu wywołań, dopóki właściwość DeclaringType metody MethodInfo na stosie nie będzie równa typowi przekazywanego typu (typ w dzienniku powyżej). Kiedy odkryje, że DeclaringType, następną metodą w stosie wywołań jest właściwa metoda wywołania (kod aplikacji).
Można również użyć przeciążenia o strukturze LoggingEvent
.
Dokumentacja mówi również, że metoda Log jest przeznaczona do użycia przez owijarki. Nie wiem, czy należy to traktować jako komunikat "informacyjny", czy silną sugestię, by nie używać go bezpośrednio.
Jeśli chcesz, aby wszystkie połączenia rejestrowania metodą dziennika można zmienić kod gdzie masz rejestrator tak być (dzięki czemu można wyeliminować za pomocą właściwości Logger dla każdego wywołania Log):
private static ILogger logger =
LogManager.GetLogger(
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType).Logger;
logger.Log(logger.GetType(),LogLevel.Debug,"Something went wrong", ex);
Cóż mogłoby rozszerzyć klasę, ale susopect trzeba powiedzieć to dlaczego chcesz wprowadzić tę zmianę. –
Przeważnie dla wygody. Mam aplikację, którą mogę uruchomić jako usługę systemu Windows lub aplikację konsoli. Podczas uruchamiania jako aplikacja konsolowa dzienniki powinny być drukowane na ekranie zamiast w pliku. Ponieważ została zaimplementowana, metoda, która dokonuje rejestrowania, pobiera parametr jako parametr. Wiem, że prawdopodobnie mógłbym użyć appendera konsoli dla log4net, ale nie wiem, jak wybrać, który z appenderów ma być używany podczas kompilacji. – olif