2017-01-22 11 views
1

.NETコンソールアプリケーションをローリングログファイルを使用するように設定し、アプリケーションの実行中に内容を消去できるようにするにはどうすればよいですか?最小限のlog4net設定

私は、ウェブを検索してlog4netの文書を読むことで、必要なものをすべて集めた後、自分自身の質問に答えています。驚いたことに、SO上に存在するすべての要件をカバーする単一の答えがまだ存在しないため、私はこの1年または2年に一度同じ仕事をする傾向があります。

答えて

1

a))はNuGetパッケージlog4netの(現在の2.0.x)

b)はStartメソッド

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

Cの先頭に次の行を追加インストールApp.configファイルに次のセクションを追加

すべてのこれらの設定値

<?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> 
012の意味を理解しようとするとき* log4netの sdk documentationは非常に便利です

d)ロガーインスタンスを作成して使用する

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); 
     } 
    } 
} 
関連する問題