Настройка log4net для записи в разные файлы на основе уровня журнала - PullRequest
2 голосов
/ 01 февраля 2011

Я настраиваю log4net и хочу записывать сообщения отладки в «debug.log», информационные сообщения в «info.log» и т. Д.

Для этого я использую несколько дополнений, таких как:

<appender name="DebugLogger" type="log4net.Appender.RollingFileAppender">
   <file value="..\Logs\Debug.log" />
   <threshold value="DEBUG" />
   <appendToFile value="true" />
   <rollingStyle value="Size" />
   <maxSizeRollBackups value="10" />
   <maximumFileSize value="1MB" />
   <staticLogFileName value="true" />
   <layout type="log4net.Layout.PatternLayout">
     <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] -    %message%newline" />
   </layout>

и аналогичные для уровней INFO, WARN и ERROR. Это работает нормально, но, похоже, требует дополнительной работы, потому что все эти дополнения отличаются только пороговым значением (отладка или предупреждение и т. Д.) И именем файла (debug.log или warn.log и т. Д.)

Есть ли лучший способ достичь моей цели? Может быть, что-то вроде объявления «базовых дополнений» первым.

(на отдельном примечании - если это невозможно в log4net, но возможно в NLog, я был бы также признателен за это)

Спасибо!

1 Ответ

3 голосов
/ 01 февраля 2011

Хорошо, это невозможно в log4net - просто хотел закрыть вопрос.

Я проверил NLog, хотя, по-видимому, это довольно просто (см. Переменную $level в конфигурации):

<?xml version="1.0" encoding="utf-8" ?>
<nlog>
   <variable name="logDirectory" value="${basedir}\..\Logs"/>
   <targets>
       <target name="file" type="File" fileName="${logDirectory}\${level}.log" />
   </targets>
   <rules>
       <logger name="*" minlevel="Debug" writeTo="file" />
   </rules>
</nlog>
...