【C#.NET】log4netを利用してエラーや監視したい値を記録してログ保存しよう。
Nugetパッケージ
log4netはNuGetパッケージでインストールします。
まずは、NuGetパッケージの管理を開きます。
![nuget_ex](https://extralab.org/wp/wp-content/uploads/2020/09/nuget_ex.png)
参照タブで検索欄に「log4net」と書き込み検索します。
![log4net_nuget_search](https://extralab.org/wp/wp-content/uploads/2020/09/log4net_nuget_search.png)
上位にヒットしたlog4netを選択して、インストールボタンを押下してインストールします。
アンインストールも簡単にできます。
![Nuget_log4net](https://extralab.org/wp/wp-content/uploads/2020/09/Nuget_log4net.png)
参照の追加
![log4netpageseem](https://extralab.org/wp/wp-content/uploads/2020/09/log4netpageseem.png)
configファイル作成
configファイルを作成します。名前はlog4net.configにしましたが、適当でOKです。
![log4netconfig1](https://extralab.org/wp/wp-content/uploads/2020/09/log4netconfig1.png)
configファイルの内容
新規作成したconfigファイルの中身に下記のコードを書き込む。
<?xml version="1.0" encoding="utf-8" ?> <configuration> <log4net> <appender name="tryLogAppender" type="log4net.Appender.RollingFileAppender" > <File value=".\log\" /> <DatePattern value='yyyyMMdd".log"' /> //ログファイル名指定 <StaticLogFileName value="false" /> <RollingStyle value="date" /> <AppendToFile value="true" /> <MaximumFileSize value="100MB" /> <MaxSizeRollBackups value="30" /> <layout type="log4net.Layout.PatternLayout"> <ConversionPattern value="%date [%thread] [%-5level] (%method) - %message%n" /> </layout> </appender> <filter type="log4net.Filter.LevelRangeFilter"> <LevelMax value="FATAL" /> <LevelMin value="DEBUG" /> </filter> <root> <level value="Debug" /> <appender-ref ref="tryLogAppender" /> </root> </log4net> </configuration>
Configファイルのプロパティ設定
log4net.configファイルのプロパティを設定します。
![property_log4net](https://extralab.org/wp/wp-content/uploads/2020/09/property_log4net.png)
出力ディレクトリにコピーの項目を「新しい場合はコピーする」または、「常にコピーする」に設定します。
AssemblyInfo.csに追記
Propertiesの配下にあるAssmblyInfo.csの中身に下記のコードを追記します。
![AssemblyInfo.cs](https://extralab.org/wp/wp-content/uploads/2020/09/AssemblyInfo.cs_.png)
![assemblyInfo_1](https://extralab.org/wp/wp-content/uploads/2020/09/assemblyInfo_1.png)
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
※ConfigFile = “(configファイル名)”
ログ出力
ログを出力させる
![loge4net_code1](https://extralab.org/wp/wp-content/uploads/2020/09/loge4net_code1.png)
まずは、定義を作成します。
今回は以下の画面設定でつくってみました。
![log4net_design](https://extralab.org/wp/wp-content/uploads/2020/09/log4net_design.png)
ログ出力してみます。
ソースコード↓
結果
![logfile](https://extralab.org/wp/wp-content/uploads/2020/09/logfile.png)
実行すると、logファイルが作成されます。logフォルダの中に
![logdate_file](https://extralab.org/wp/wp-content/uploads/2020/09/logdate_file.png)
logファイルが作成されていきます。
今回は日付毎にログファイルが作成されるようにconfigファイルで設定しました。
![log4net_gamen_ex](https://extralab.org/wp/wp-content/uploads/2020/09/log4net_gamen_ex.png)
TextBox1に12.5、
TextBox2に7.3、を入力して
TextBox3に19.8を出力させるbutton1を押下したとき、
ログファイルに下記の様にログ出力されます。
![log4net_log_value](https://extralab.org/wp/wp-content/uploads/2020/09/log4net_log_value.png)
2020-09-22 15:51:51,977 [1] [INFO ] (button1_Click) - 値1 :12.5 2020-09-22 15:51:52,012 [1] [INFO ] (button1_Click) - 値2 :7.3 2020-09-22 15:51:52,012 [1] [INFO ] (button1_Click) - 値1 + 値2 = 値3 :19.8
操作した日時、入力した値等が見れます。
logの区切りレベル
- Fatal システム停止するような致命的な障害レベル
- Error システム停止はしないが、問題となる障害レベル
- Warn 障害ではない注意警告レベル
- Info 操作ログなどの情報レベル
- Debug 開発用のデバッグメッセージレベル
- trace 詳細なデバッグの出力レベル
それぞれのレベル毎にログファイルを出力したりもできる。