いまさら聞けない「log4net」の使い方
新人君も4ヶ月近く当社での経験を積んだので、成長の証にLog4netをプロジェクトへ導入する手順を書かせた。
ソリューションへNugetを使って、Packageをインストール
メニューの
ツール > Nugetパッケージ マネージャー > ソリューションのNugetパッケージ管理
から、オンラインで「log4net」を検索して、該当プロジェクトへインストールする。
#設定ファイルをAssemblyInfo.csへ記述
該当プロジェクトの
Properties > AssemblyInfo.csを開いて
//Log4Net設定ファイルを指定
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "./設定ファイル名.xml", Watch = true)]
プログラム開始時に、Log4netの設定ファイルの読込ませる
該当プロジェクトのProgram.csに
//アプリケーションのグローバル変数設定
string logFolderName = ログ書込用フォルダのPath;
Environment.SetEnvironmentVariable("グローバル変数名", logFolderName);
//Log4net設定ファイルを読込
//設定ファイルは、AssembleInfo.csへ記述済み
XmlConfigurator.Configure();
Log4netの設定ファイルを作成
AssemblyInfo.csに記述したPathへ、設定ファイルを作成する。
設定
appender ログを出力するモジュール相当 用意されているタイプを設定
・コンソール
・ファイル
など。
appenderへ
・layout
・File名(Path含む)
・日付フォーマット
・ファイル切替
などを設定
<?xml version="1.0" encoding="utf-8" ?> <configuration> <log4net> <!-- コンソール出力用 (VS 上 [出力] ウインドウへの出力) --> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> <!-- 出力文字列のフォーマット --> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="@%-5level>> %message%newline" /> </layout> </appender> <!-- 通常ログ:単一ファイル出力 --> <appender name="InfoLogDailyAppender" type="log4net.Appender.RollingFileAppender"> <!-- ファイル名は日付ごと グローバル変数名で設定したフォルダのLogs¥Info_yyyyMMdd.logで出力--> <param name="File" value="${グローバル変数名}\Logs\Info_" /> <param name="DatePattern" value='yyyyMMdd".log"' /> <param name="RollingStyle" value="date" /> <param name="StaticLogFileName" value="false" /> <AppendToFile value="true" /> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMax" value="Error" /> <param name="LevelMin" value="Trace" /> </filter> <layout type="log4net.Layout.PatternLayout"> <ConversionPattern value="%date [%-5level] - %message%n" /> </layout> </appender> <!-- エラーログ:分割ファイル出力 --> <appender name="ErrorLogDailyAppender" type="log4net.Appender.RollingFileAppender"> <!-- ファイル名は日付ごと --> <param name="File" value="${グローバル変数名}\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="Warn" /> </filter> <param name="MaximumFileSize" value="10MB" /> <param name="MaxSizeRollBackups" value="10" /> <layout type="log4net.Layout.PatternLayout"> <ConversionPattern value="%date [%-5level] %class %method - %message%n" /> </layout> </appender> <root> <!-- 使用する Appender --> <appender-ref ref="ConsoleAppender" /> <appender-ref ref="InfoLogDailyAppender" /> <appender-ref ref="ErrorLogDailyAppender" /> </root> </log4net> </configuration>
以上で設定は完了。