2010-03-08 4 views
4

У меня есть следующие конфигурации в моем файле web.config, но как я могу записывать информацию в data.txt и general.txt отдельно в C#?информация журнала в разные файлы журнала

Может ли кто-нибудь предоставить образец кода для меня?

<appender name="GeneralLog" type="log4net.Appender.RollingFileAppender"> 
    <file value="App_Data/Logs/general.txt" /> 
    <appendToFile value="true" /> 
    <maximumFileSize value="2MB" /> 
    <rollingStyle value="Size" /> 
    <maxSizeRollBackups value="5" /> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%d{HH:mm:ss.fff} [%t] %-5p %c - %m%n" /> 
    </layout> 
</appender> 
<appender name="DataLog" type="log4net.Appender.RollingFileAppender"> 
    <file value="App_Data/Logs/data.txt" /> 
    <appendToFile value="true" /> 
    <maximumFileSize value="2MB" /> 
    <rollingStyle value="Size" /> 
    <maxSizeRollBackups value="5" /> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%d{HH:mm:ss.fff} [%t] %-5p %c - %m%n" /> 
    </layout> 
</appender> 

ответ

4

В вашем приложении, в идеале, вы должны регистрировать один и тот же путь как для общего, так и для данных, просто используя разные регистраторы. В конфигурации у вас есть несколько вариантов «маршрутизации» входящих сообщений журнала в разные приложения.

Первый - сами регистраторы. В зависимости от того, как ваше приложение организовано с точки зрения классов и пространств имен, вы упорядочиваете свои журналы в иерархическом порядке в соответствии с вашей иерархией пространства имен. Тогда у вас могут быть разные ветви в иерархии, идущие в разные приложения. Прочитайте раздел «Наследование уровня» here.

В дополнение к иерархиям регистраторов вы можете использовать любое имя в качестве имен регистратора. Поэтому для ваших общих разделов вашего приложения вы можете использовать регистратор с именем «general».

Следующая вещь, которую вы можете использовать для управления потоком сообщений журнала, используется filters. Вы можете фильтровать сообщения на имя, уровень, свойства и т. Д., Или вы можете реализовать свои собственные фильтры.

Вот пример, показывающий, как вы могли бы маршрутизировать общий и данные в свои приложения, используя элемент журнала и фильтр. Мы маршрутизируем корневой элемент (который получает все сообщения журнала) к приложению данных. В приложении данных мы отфильтровываем все сообщения, поступающие из общего регистратора.

Кроме того, мы направляем общий регистратор на общий appender.

<appender name="GeneralLog" type="log4net.Appender.RollingFileAppender"> 
    ... 
</appender> 

<appender name="DataLog" type="log4net.Appender.RollingFileAppender"> 
    <filter type="log4net.Filter.LoggerMatchFilter"> 
     <loggerToMatch value="general" /> 
     <acceptOnMatch value="false" /> 
    </filter> 
    ... 
</appender> 

<root> 
    <level value="DEBUG" /> 
    <appender-ref ref="DataLog" /> 
</root> 

<logger name="general"> 
    <level value="WARN" /> 
    <appender-ref ref="GeneralLog" /> 
</logger> 
Смежные вопросы