2017-01-22 4 views
1

Как настроить консольное приложение .NET для использования скользящего файла журнала и очистить его содержимое при запуске приложения?Минимальная конфигурация log4net

Я отвечаю на свой вопрос после того, как собрал все необходимые фрагменты, выполнив поиск в Интернете и снова просмотрев документацию log4net (что довольно болтливо). Я, как правило, занимаюсь той же работой один раз в год или два, потому что на удивление нет единого ответа, охватывающего все требования, существующие на SO.

ответ

1

а) установить NuGet пакет log4net (в настоящее время 2.0.x)

б) добавить следующую строку в начало метода Start

public static void Start(string[] args) 
{ 
    log4net.Config.XmlConfigurator.Configure(); 
    ... 
} 

с) добавить следующие разделы App.config

* log4net sdk documentation весьма полезно при попытке выяснить смысл всех этих значений конфигурации

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> 
    </configSections> 
    <log4net> 
     <appender name="RollingFileAppender_All" type="log4net.Appender.RollingFileAppender"> 
      <file value="MyApplication.log" /> 
      <maxSizeRollBackups value="10" /> 
      <maximumFileSize value="1MB" /> 
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
      <layout type="log4net.Layout.PatternLayout"> 
       <conversionPattern value="%date [%thread] %-5level %logger - %message %exception%newline" /> 
      </layout> 
     </appender> 
     <root> 
      <level value="ALL" /> <!-- ALL, DEBUG, INFO, WARN, ERROR, FATAL, OFF --> 
      <appender-ref ref="RollingFileAppender_All" /> 
     </root> 
    </log4net> 
</configuration> 

д) создать экземпляр регистратора и использовать его

using log4net; 

public class SomeClass 
{ 
    private static readonly ILog log = LogManager.GetLogger(typeof(SomeClass)); 

    public void DoSomething() 
    { 
     try 
     { 
      throw new InvalidOperationException("test"); 
     } 
     catch (Exception ex) 
     { 
      log.Error(ex); 
     } 
    } 
} 
Смежные вопросы