2014-12-08 2 views
2

Я использую следующие параметры app.config для нескольких файлов журнала. Ниже приведены настройки моего app.config. Но когда я использую настройки «LogFileAppender» для записи журнала в файл, он также писать журналы на консолиКак настроить несколько конфигураций ведения журнала с помощью log4net?

<log4net> 
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <File value="C:\File1.log" /> 
    <AppendToFile value="true" /> 
    <rollongStyle value="Composite" /> 
    <maximumFileSize value="200MB" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <ConversionPattern value="%date %messge%newline"/> 
    </layout> 
    </appender> 

    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <File value="C:\File2.log" /> 
     <AppendToFile value="true" /> 
     <rollongStyle value="Date" /> 
     <maximumFileSize value="100MB" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <ConversionPattern value="%date %messge%newline"/> 
     </layout> 
     <filter type="log4net.Filter.LevelRangeFilter"> 
      <acceptOnMatch value="true" /> 
      <levelMin value="INFO" /> 
     </filter> 
     <filter type="log4net.Filter.LevelRangeFilter"> 
      <acceptOnMatch value="true" /> 
      <levelMin value="FATAL" /> 
     </filter> 
    </appender> 

    <appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender"> 
    <mapping> 
     <level value ="ERROR"/> 
     <foreColor value ="Red"/> 
    </mapping> 
    <mapping> 
     <level value ="WARN"/> 
     <foreColor value ="Yellow"/> 
    </mapping> 
    <layout type="log4net.Layout.PatternLayout"> 
     <ConversionPattern value="%date %messge%newline"/> 
    </layout> 
    </appender> 
    <root> 
     <level value="ALL" /> 
     <appender-ref ref="LogFileAppender" /> 
     <appender-ref ref="RollingFile" /> 
     <appender-ref ref="ColoredConsoleAppender" /> 
    </root> 
</log4net> 

В C# код, я использую следующие вызовы методов.

private static readonly log4net.ILog ilogger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 

    log4net.Config.XmlConfigurator.Configure(); 

Вопрос:

Как я могу ограничить ведение журнала консоли при использовании LogFileAppender, используя вышеуказанный файл app.config?

+0

Вы пробовали удалить его? –

+0

Я не понимаю, что вы подразумеваете под **, когда я использую настройки «LogFileAppender» ** - в вашем файле конфигурации вы используете все 3 участника. Вы можете объяснить? – ShayD

+0

Три приложения (2 библиотеки dll и один exe), совместно использующие один и тот же файл конфигурации. Но в моем приложении просто я хочу зарегистрироваться с помощью LogFileAppender – Ullan

ответ

0

Я нашел решение, изменив app.config следующим образом.

<logger name = "FileLogger" additivity="false"> 
    <level value="ALL" /> 
    <appender-ref ref="LogFileAppender" /> 
</logger> 

<root> 
    <level value="ALL"/> 
    <appender-ref ref="RollingFile"/> 
    <appender-ref ref="RollingFileAppender" /> 
    <appender-ref ref="ColoredConsoleAppender" /> 
</root> 

В коде C#, вызовите LogFileAppender явно ниже

private static readonly log4net.ILog ilogger = log4net.LogManager.GetLogger("FileLogger"); 
1

Добавить ForwardingAppender в конфигурации между корневой регистраторе и ColoredConsoleAppender, так что вы получите эту конфигурацию

  • корень -> LogFileAppender
  • корень -> RollingFile
  • корень -> ForwardingAppender -> ColoredConsoleAppender

Затем в вашем ForwardingAppender добавьте фильтр, который позволит пропускать события, которые не происходят из приложение, которое вы не хотите; a LoggerMatchFilter было бы хорошей идеей, так как вы можете исключить регистраторы, происходящие из пространства имен желаемого приложения.

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