log4net(.Netframework)
はじめに
logの書き出しの為に毎度同じ実装するのも手間なので、外部ツールを使って楽したい。
VisualStudio2022にて確認
.NetFrameworkと.Net6とでは実装が違っているみたいで、下記は.NetFramework版です。
インストール
VisualStudioにて適当なプロジェクトを作成。
nugetからインストール
メニュー「ツール」「NuGetパッケージマネージャ」「ソリューションのNuGetパッケージの管理」を選択
開かれた「NuGetソリューション」のウィンドウから「参照」を選択して、「検索」欄に「log4net」を入力して検索
最初の設定
・AssemblyInfo.cs
プロジェクト内の
「Properties/AssemblyInfo.cs」ファイルを変更します。
AssemblyInfo.csファイルの最終行に以下を追加
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
・App.config
プロジェクト内の
「App.config」ファイルを変更します。
<configuration>
<section name="log4net"
type ="log4net.Config.log4NetConfigurationSectionHandler,log4net"/>
</configuration>
コンソールへの書き出し
log出力の設定は、App.configに記載します。
以下を追記
<log4net>
<!-- アペンダの作成 -->
<appender name="LogToConsole" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d[%t] %p - %m%n" />
</layout>
</appender>
<!-- 使用するアペンダの選択 -->
<root>
<appender-ref ref="LogToConsole" />
</root>
</log4net>
appender内のtypeで、出力する先を決めます。今回はコンソールへの出力なので、「ConsoleAppender」を選択。
アペンダは色々と種類があります。
アペンダ | 出力先 |
---|---|
ConsoleAppender | コンソール |
ColoredConsoleAppender | コンソール(色指定可能) |
EventLogAppender | イベントログ |
FileAppender | ファイル |
RollingFileAppender | ファイル(分割出力) |
conversionPatternには、ログへの書き出し形式を指定できます。
値 | 説明 |
---|---|
%d | 日時 |
%L | 行番号 |
%m | メッセージ |
%n | 改行 |
%p | ログレベル |
%t | スレッド名 |
%M | メソッド名 |
次に、ログを書き出したいコードの先頭に以下を記述
private static readonly log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
ログを書き出したい箇所に以下を記述
logger.Debug("メッセージ");
ログのレベル毎に記述が変わる
レベル |
---|
Fatal |
Error |
Warm |
Info |
Debug |
ファイルへの書き出し
App.configにファイル書き出し用のアペンダを追加します。
<appender name="LogToFile" type="log4net.Appender.FileAppender">
<param name="File" value=".\log\a.log"/>
<param name="AppendToFile" value ="true"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d[%t] %p - %m%n" />
</layout>
</appender>
同じく、App.config内の使用アペンダも追加。
LogToFileの項目を追加します。
<!-- 使用するアペンダの選択 -->
<root>
<appender-ref ref="LogToConsole" />
<appender-ref ref="LogToFile" />
</root>
ファイルへの書き出し(分割出力)
サイズや日時でログファイルを分割してくれる。分割したファイルは何個まで残すかの指定も可能です。
App.configのアペンダの設定を変更します。
<appender name="LogToFile" type="log4net.Appender.RollingFileAppender">
<param name="File" value=".\log\a.log"/>
<param name="AppendToFile" value ="true"/>
<param name="rollingStyle" value="Size" />
<param name="maxSizeRollBackups" value="3"/>
<param name="maximumFileSize" value="5KB"/>
<param name="staticLogFileName" value="false"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d[%t] %p - %m%n" />
</layout>
</appender>
Discussion