TechBox

業務で使えそうな技術を紹介します。

【C#】log4netの使い方

log4netの使い方を紹介します。

環境

  • .NET Framework 4.6
  • VisuakStudio Community 2017

設定方法

log4netのインストール

ツール→Nugetパッケージマネージャー→ソリューションのNuGetパッケージの管理を選択

 

log4netを検索し、ヒットしたら、チェックボックスをいれてインストールを実行

 

AssemblyInfo.csの設定

log4netのログ出力形式の設定をApp.configに持たせる場合は、AssemblyInfo.csに対して、次のように追記する。

・・・・

//最下行に追加
//log4netの設定。App.configに設定を持たせる場合
[assembly: log4net.Config.XmlConfigurator(Watch = true)]

//log4netの設定。任意のファイルに設定を持たせる場合
//[assembly: log4net.Config.XmlConfigurator(Watch=true, ConfigFile="設定ファイルパス")]

 

ログの出力設定

App.configにログの出力設定を記述する

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6"/>
    </startup>
    <appSettings>
      <!--coincheck-->
      <add key="coincheck-apiKey" value="i-8y7jZntVPbvey_" />
      <add key="coincheck-secret" value="MrLfPHBImJ2mxGdCynzr7bAnCw0XChNO" />
    </appSettings>

  
  
    <!--log4netの設定ここから-->
    <configSections>
      <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
    </configSections>
 
    <log4net>
      <appender name="LoggerFile" type="log4net.Appender.RollingFileAppender">
        <!-- ログファイルのパス -->
        <File value="C:\Logs" />
        <!-- 追加書き込み -->
        <appendToFile value="true" />
        <!-- 日付ごとにファイルを作成 -->
        <rollingStyle value="date" />
        <!-- ログ・ファイル名が固定ではない場合、falseを指定する -->
        <staticLogFileName value="false" />
        <!-- ファイル名の設定 -->
        <datePattern value='"."yyyyMMdd".log"' />
 
        <layout type="log4net.Layout.PatternLayout">
          <!-- ログの書式 -->
          <conversionPattern value="%d[%t] %p - %m%n"/>
        </layout>
      </appender>
 
      <root>
        <level value="All" />
        <!-- どのログ出力先を使用するか -->
        <appender-ref ref="LoggerFile" />
      </root>
    </log4net>
    <!--log4netの設定ここまで-->

</configuration>

 

ログの出力

    private static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
    static void Main(string[] args)
    {
        log.Fatal("Fatal");
        log.Error("Error");
        log.Warn("Warn");
        log.Info("Info");
        log.Debug("Debug");                        

        Console.ReadLine();
    }

以上です。