log4netを使ってログを出力する方法【C#,Visual Studio,.NET Framework,Mac】
1.Visual Studioを起動する
2.ソリューションエクスプローラのプロジェクト名の上で右クリックし「NuGetパッケージの管理(M)...」を選択する
3.①右上の検索欄で「log4net」と入力し、②log4netをチェックする。③その後、「パッケージの追加」ボタンを押下する
4.ソリューションエクスプローラのプロジェクト名の上で右クリックし、追加>新しいファイルを選択する
5.General>空のクラスを選択し、AssemblyInfo.csを作成する。下記のコードを入力し、保存する。
// read Log4Net Configuration file
[assembly: log4net.Config.XmlConfigurator(ConfigFile=@"Log4net.Config.xml", Watch=true)]
6.ソリューションエクスプローラのプロジェクト名の上で右クリックし、追加>新しいファイルを選択する。
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」を追加する。
9.ソリューションをビルドし、デバッグするとログファイルがローカルのプロジェクトフォルダ内に作成される。
10.ログファイルを開くとログが書き込まれていることが確認できる。
ログが文字化けする場合、Log4net.Config.xmlの下記文字コード部分を変えると解決するかも。
<?xml version="1.0" encoding="utf-8" ?>
~省略~
<Encoding value="UTF-8"/>
~省略~
下記サイトを参考にさせていただきました。