【C#.NET】log4netを利用してエラーや監視したい値を記録してログ保存しよう。

C#.NET

ad2

【C#.NET】log4netを利用してエラーや監視したい値を記録してログ保存しよう。

Nugetパッケージ

log4netはNuGetパッケージでインストールします。

まずは、NuGetパッケージの管理を開きます。

nuget_ex

参照タブで検索欄に「log4net」と書き込み検索します。

log4net_nuget_search

上位にヒットしたlog4netを選択して、インストールボタンを押下してインストールします。

アンインストールも簡単にできます。

Nuget_log4net

参照の追加

log4netpageseem

 

configファイル作成

configファイルを作成します。名前はlog4net.configにしましたが、適当でOKです。

log4netconfig1

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

出力ディレクトリにコピーの項目を「新しい場合はコピーする」または、「常にコピーする」に設定します。

AssemblyInfo.csに追記

Propertiesの配下にあるAssmblyInfo.csの中身に下記のコードを追記します。

AssemblyInfo.cs assemblyInfo_1
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

※ConfigFile = “(configファイル名)”

ログ出力

ログを出力させる

loge4net_code1

まずは、定義を作成します。

今回は以下の画面設定でつくってみました。

log4net_design

ログ出力してみます。

ソースコード↓

 

 

 

結果

logfile

実行すると、logファイルが作成されます。logフォルダの中に

logdate_file

logファイルが作成されていきます。

今回は日付毎にログファイルが作成されるようにconfigファイルで設定しました。

log4net_gamen_ex

TextBox1に12.5、

TextBox2に7.3、を入力して

TextBox3に19.8を出力させるbutton1を押下したとき、

ログファイルに下記の様にログ出力されます。

log4net_log_value
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 詳細なデバッグの出力レベル

それぞれのレベル毎にログファイルを出力したりもできる。