Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
 log4net логгирование в 2 файла  [new]
Sv219
Member

Откуда: Омск
Сообщений: 976
использую log4net. необходимо сделать логгирование в 2 файла, причем в один файл DEBUG должно писатся все, а в другой файл INFO должо писаться тока то что относится к INFO (т.е. level = INFO).

вопрос. как правильно настроить лог конфиг, чтобы выполнялось необходимое условие (саейчас в оба файла пишется вся DEBUG информация)?

<?xml version="1.0" encoding="utf-8"?>
<log4net>
    <appender name="RollingFileDebug" type="log4net.Appender.RollingFileAppender">
        <file value="log\ImportJobsDebug.log" />
        <appendToFile value="true" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%d [%p] %c - %m%n" />
        </layout>
    </appender>
    <appender name="RollingFileInfo" type="log4net.Appender.RollingFileAppender">
        <file value="log\ImportJobsInfo.log" />
        <appendToFile value="true" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%d [%p] %c - %m%n" />
        </layout>
    </appender>
    <root>
        <level value="DEBUG" />
        <appender-ref ref="RollingFileDebug" />
        <appender-ref ref="RollingFileInfo" />
    </root>
</log4net>
9 янв 08, 16:43    [5130338]     Ответить | Цитировать Сообщить модератору
 Re: log4net логгирование в 2 файла  [new]
Dmitdd
Member

Откуда:
Сообщений: 477
Надо добавлять фильтры
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="log1.log" />
      <param name="AppendToFile" value="true" />
      <param name="RollingStyle" value="Date" />
      <param name="StaticLogFileName" value="true" />
      <param name="DatePattern" value="yyyyMMdd" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
      </layout>
      <filter type="log4net.Filter.LevelMatchFilter">
        <LevelToMatch value="INFO"/>
        <AcceptOnMatch value="true"/>
      </filter>
      <filter type="log4net.Filter.LevelMatchFilter">
        <LevelToMatch value="ERROR"/>
        <AcceptOnMatch value="false"/>
      </filter>
      <filter type="log4net.Filter.LevelMatchFilter">
        <LevelToMatch value="DEBUG"/>
        <AcceptOnMatch value="false"/>
      </filter>
    </appender>
    <appender name="RollingFileAppender1" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="log2.log" />
      <param name="AppendToFile" value="true" />
      <param name="RollingStyle" value="Date" />
      <param name="StaticLogFileName" value="true" />
      <param name="DatePattern" value="yyyyMMdd" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
      </layout>
      <filter type="log4net.Filter.LevelMatchFilter">
        <LoggerToMatch value="RollingFileAppender1"/>
        <LevelToMatch value="DEBUG"/>
        <AcceptOnMatch value="true"/>
      </filter>
    </appender>
    <root>
      <level value="DEBUG" />
      <appender-ref ref="RollingFileAppender" />
      <appender-ref ref="RollingFileAppender1" />
    </root>
Посмотрите, в первый логгер не будут писаться уровни debug и error, зато будут писаться все остальные, во второй логгер не будет писаться только уровень debug. Всего этих уровней 7, включая уровень OFF. Можно добавлять эти уровни изапрещать запись по ним. Кроме того, вместо перечисления всех уровней для запрета есть фильтр LevelRangeFilter , в котором можно указать уровень "от" и "до", для которых разрешить или запретить запись.
В общем, поэкспериментируйте и все поймете. Кстати, это я только что нагуглил, поскольку самому нужно.
10 янв 08, 14:08    [5134361]     Ответить | Цитировать Сообщить модератору
Все форумы / WinForms, .Net Framework Ответить