log4netを使ってログを出力する方法【C#,Visual Studio,.NET Framework,Mac】

1.Visual Studioを起動する


2.ソリューションエクスプローラのプロジェクト名の上で右クリックし「NuGetパッケージの管理(M)...」を選択する

スクリーンショット 2021-03-13 2.46.04

3.①右上の検索欄で「log4net」と入力し、②log4netをチェックする。③その後、「パッケージの追加」ボタンを押下する

スクリーンショット 2021-03-13 2.48.03

4.ソリューションエクスプローラのプロジェクト名の上で右クリックし、追加>新しいファイルを選択する

スクリーンショット 2021-03-13 2.52.16

5.General>空のクラスを選択し、AssemblyInfo.csを作成する。下記のコードを入力し、保存する。

// read Log4Net Configuration file
[assembly: log4net.Config.XmlConfigurator(ConfigFile=@"Log4net.Config.xml", Watch=true)]

6.ソリューションエクスプローラのプロジェクト名の上で右クリックし、追加>新しいファイルを選択する。

スクリーンショット 2021-03-13 2.58.10

7.XML>空のXMLファイルを選択し、Log4net.Config.xmlを作成する。下記のコードを入力し、保存する。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
   <log4net>

       <!-- 通常ログ:単一ファイル出力 -->
       <appender name="InfoLogDailyAppender" type="log4net.Appender.FileAppender">
           <File value="${APPDATA}\\Rohinomiya\\SampleLog4Net\\Logs\\Info.log" />

           <AppendToFile value="true" />

           <filter type="log4net.Filter.LevelRangeFilter">
               <param name="LevelMax" value="WARN" />
               <param name="LevelMin" value="INFO" />
           </filter>

           <layout type="log4net.Layout.PatternLayout">
               <ConversionPattern value="%date [%thread] [%-5level] %logger - %message%n" />
           </layout>
       </appender>

       <!-- エラーログ:分割ファイル出力 -->
       <appender name="ErrorLogDailyAppender" type="log4net.Appender.RollingFileAppender">
           <!-- ファイル名は日付ごと -->
           <param name="File" value="${APPDATA}\\Rohinomiya\\SampleLog4Net\\Logs\\Error_" />
           <param name="DatePattern" value='yyyyMMdd".log"' />
           <param name="RollingStyle" value="date" />
           <param name="StaticLogFileName" value="false" />

           <param name="AppendToFile" value="true" />

           <filter type="log4net.Filter.LevelRangeFilter">
               <param name="LevelMax" value="FATAL" />
               <param name="LevelMin" value="ERROR" />
           </filter>

           <param name="MaximumFileSize" value="10MB" />
           <param name="MaxSizeRollBackups" value="10" />

           <layout type="log4net.Layout.PatternLayout">
               <ConversionPattern value="%date [%thread] [%-5level] %logger %file(%line) %class %method - %message%n" />
           </layout>
       </appender>

       <!-- デバッグ用:分割ファイル出力 -->
       <appender name="DebugLogDailyAppender" type="log4net.Appender.RollingFileAppender">

           <!-- ファイル名は日付ごと -->
           <param name="File" value="${APPDATA}\\Rohinomiya\\SampleLog4Net\\Logs\\Trace_" />
           <param name="DatePattern" value='yyyyMMdd".log"' />
           <param name="RollingStyle" value="date" />
           <param name="StaticLogFileName" value="false" />

           <param name="AppendToFile" value="true" />

           <filter type="log4net.Filter.LevelRangeFilter">
               <!-- <param name="LevelMax" value="FATAL" /> -->
               <param name="LevelMin" value="TRACE" />
           </filter>

           <param name="MaximumFileSize" value="10MB" />
           <param name="MaxSizeRollBackups" value="10" />

           <layout type="log4net.Layout.PatternLayout">
               <ConversionPattern value="%date [%thread] [%-5level] %logger %file(%line) %class %method - %message%n" />
           </layout>
           <Encoding value="UTF-8"/>
       </appender>

       <root>
           <!-- TRACE以上のログを記録 -->
           <level value="TRACE" />
           <!-- 使用する Appender -->
           <appender-ref ref="InfoLogDailyAppender" />
           <appender-ref ref="ErrorLogDailyAppender" />
           <appender-ref ref="DebugLogDailyAppender" />
       </root>

   </log4net>
</configuration>

7.起動しているクラスファイルに下記のコードを追加する。

ILog logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

   logger.Debug("開発中のデバッグ/トレースに使用する");
   logger.Info("情報(操作履歴等)");
   logger.Warn("注意/警告(障害の一歩手前)");
   logger.Error("システムが停止するまではいかない障害が発生");
   logger.Fatal("システムが停止する致命的な障害が発生");

8.IlogとLogManagerに赤線が表示されるのでマウスオーバーしてメニューから「using log4net」を追加する。

スクリーンショット 2021-03-13 3.06.25

9.ソリューションをビルドし、デバッグするとログファイルがローカルのプロジェクトフォルダ内に作成される。

スクリーンショット 2021-03-13 3.11.13

10.ログファイルを開くとログが書き込まれていることが確認できる。

スクリーンショット 2021-03-13 3.12.27

ログが文字化けする場合、Log4net.Config.xmlの下記文字コード部分を変えると解決するかも。

<?xml version="1.0" encoding="utf-8" ?>
~省略~
<Encoding value="UTF-8"/>
~省略~

下記サイトを参考にさせていただきました。

Log4Net を利用してログを記録する


いいなと思ったら応援しよう!