Istnieją dwa sposoby konfigurowania i używania log4net. Pierwsza to sytuacja, w której mogę skonfigurować własny appender i powiązany logger:
<!-- language: xml -->
<appender name="myLogAppender" type="log4net.Appender.RollingFileAppender" >
<file value="Logs\myLog.log" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %level - %message%n" />
</layout>
</appender>
<logger name="myLog">
<level value="All"></level>
<appender-ref ref="myLogAppender" />
</logger>
A kiedy chcę coś zapisać w logu, mogę wykonać następujące czynności:
ILog log = LogManager.GetLogger("myLog");
log.Info("message");
Innym sposobem na użycie tego jest skonfigurowanie roota tak, aby był tak szczegółowy, jak chcę:
<!-- language: xml -->
<root>
<level value="Error" />
<appender-ref ref="myLogAppender" />
</root>
W tym przypadku mogę rejestrować takie komunikaty:
ILog log = LogManager.GetLogger(typeof(Bar));
log.Info("message");
Zaletą drugiego podejścia jest to, że możesz włączyć lub wyłączyć niektóre wiadomości w locie. Ale problem polega na tym, że rozwijam się w EPiServer CMS i ma własny system logowania, który używa log4net i jeśli włączę rejestrowanie informacji na poziomie roota, zostanie zapisanych wiele dzienników systemowych.
Jak używasz log4net? Każda część systemu zapisuje w swoim własnym rejestratorze, czy wszystko jest zapisywane w domyślnym rejestratorze, a konfiguracja decyduje, co dalej robić?