2015-08-04 3 views
0

Хотя нетрудно настроить разные файлы журналов, каждый из которых имеет различный conversionPattern, для каждого уровня, я хотел бы иметь минимальное ведение журнала для всех, кроме ошибок, где мне нужна подробная запись в журнале. Вот отрывок из моей текущей конфигурации:log4net - conversionPattern за уровень для одного FileAppender?

<appender name="WarningsAndBelowFileAppender" type="log4net.Appender.FileAppender"> 
    <file value="log.txt" /> 
    <appendToFile value="false" /> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%m%n" /> 
    </layout> 
    <filter type="log4net.Filter.LevelRangeFilter"> 
    <levelMax value="WARN" /> 
    </filter> 
</appender> 

<appender name="ErrorsFileAppender" type="log4net.Appender.FileAppender"> 
    <file value="errors.txt" /> 
    <appendToFile value="false" /> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%d [%t] %-5p %c [%x] - %m%n" /> 
    </layout> 
    <threshold value="ERROR" /> 
</appender> 

Я хотел бы иметь оба эти конфигурации идут в один файл журнала, просто разные conversionPatterns для каждого. Это можно сделать?

ответ

0

вы не можете сделать это в файле конфигурации, но можете сделать это с конвертером макета шаблона.

см.Информационные here

Это должно быть преобразованный код:

class MyMessageConverter : PatternLayoutConverter 
{ 
    protected override void Convert(TextWriter writer, LoggingEvent loggingEvent) 
    { 
     if (loggingEvent.Level.Value <= Level.Warn.Value) 
     { 
      writer.Write(loggingEvent.RenderedMessage); 
     } 
     else 
     { 
      writer.Write("{0} [{1}] {2,5} {3} - {4}", 
       loggingEvent.TimeStamp, 
       loggingEvent.ThreadName, 
       loggingEvent.Level.Name, 
       loggingEvent.LocationInformation.ClassName, 
       loggingEvent.RenderedMessage); 

     } 
    } 
} 

А вот конфигурационный файл:

<appender name="FileAppender" type="log4net.Appender.FileAppender"> 
    <file value="log.txt" /> 
    <appendToFile value="false" /> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%MSG%n" /> 
     <converter> 
     <name value="MSG" /> 
     <type value="yournamespace.MyMessageConverter " /> 
     </converter> 
    </layout> 
</appender> 

 Смежные вопросы

  • Нет связанных вопросов^_^