VB.NET log4netでテキストにログを出力する

VB.NETのlog4netでテキストにログを出力するサンプルです。

確認環境
・Microsoft Visual Studio Community 2019

目次

サンプル log4netとは
  1.log4netをインストールする
  2.設定ファイルを作成する
  3.ソースコードの作成
  4.出力ファイルの確認

log4netとは

 

1.log4netをインストールする

1.log4netをインストールします。
「ツール」→「NuGetパッケージマネージャー」→「ソリューションのNuGetパッケージの管理」をクリックします。

 

2.「参照」→検索からlog4netと入力して選択し、プロジェクトを選択してインストールボタンを押すとインストールされます。

 

2.設定ファイルを作成する

1.設定ファイルの場所を記述するAssemblyInfo.vbを表示します。
「プロジェクト」→「すべてのファイルを表示」をクリックします。

 

2.AssemblyInfo.vbが表示されました。

 

3.AssemblyInfo.vbの一番最後の行に以下を追加します。
xmlファイルの置き場所を./log/Log4net.xmlとしました。

' Log4Net用設定ファイル
<Assembly: log4net.Config.XmlConfigurator(ConfigFile:="./log/Log4net.xml", Watch:=True)>

 

4.logフォルダを作成し配下にLog4net.xmlを作成します。空ファイルを作成し名称をつけるやり方で問題ありません。

 

5.log4net.xmlのプロパティで「出力ディレクトリにコピー」を「常にコピー」にセットします。

 

6.Log4net.xmlに以下のコードを記述します。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <log4net>
    <appender name="testlog" type="log4net.Appender.RollingFileAppender">

      <appendToFile value="true" />
      <StaticLogFileName value="false" />
      
      <rollingStyle value="Date" />
      <file value=".\\log\\testlog-" />
      <DatePattern value='yyyyMMdd".log"' />
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="INFO" />
        <param name="LevelMax" value="Error" />
      </filter>
      <layout type="log4net.Layout.PatternLayout">
        <ConversionPattern value="%date [%thread] [%-5level] %logger - %message%n" />
      </layout>
    </appender>
    <root>
      <level value="ALL" />
      <appender-ref ref="testlog" />
    </root>
  </log4net>
</configuration>

4行目は、ファイルに出力するログの設定です。RollingFileAppenderと9行目のrollingStyleの値をDateとしているので日毎にファイルを出力します。
6行目は、追記可としています。
7行目は、年月日を追加するのでファイル名変更可能としています。
10行目は、パスとファイル名の前半部分です。
11行目は、ファイルの後半部分です。yyyyMMddに年月日が入ります。
12行目は、複数プロセスがログに書き込めるようにします。
14~17行目は、出力するログの種類です。INFOからErrorまで出力します。
debug – info – warn – error – fatalがあります。
24行目で、上記ログを呼び出します。

以下は、ApacheのLog4netの設定のリンクです。
https://logging.apache.org/log4net/release/manual/configuration.html

 

3.ソースコードの作成

ログを出力するコードです。

Imports log4net

Module Module1
	Sub Main()
		Print1()
	End Sub
	Public Sub Print1()
		Dim Log As ILog = LogManager.GetLogger(
			System.Reflection.MethodBase.GetCurrentMethod().Name)
		Dim str1 As String = "テストです"
		Log.Debug(str1)
		Log.Info(str1)
		Log.Warn(str1)
		Log.Error(str1)
		Log.Fatal(str1)
	End Sub
End Module

8行目は、ログクラスのインスタンスを取得しています。
9行目は、リフレクションです。GetCurrentMethod().Nameで現在のメソッド名を出力します。
11行目以降は、XMLで指定されたログのみ出力されます。

 

4.出力ファイルの確認

1.実行ファイルがあるフォルダにlogフォルダがあります。(プロジェクトのフォルダ>bin>Debug)

2.logフォルダの中は、Log4net.xmlとログファイルが出力されます。

3.ログファイルの中身は以下の通りです。

2020-09-25 00:25:44,017 [1] [INFO ] Print1 - テストです
2020-09-25 00:25:44,030 [1] [WARN ] Print1 - テストです
2020-09-25 00:25:44,031 [1] [ERROR] Print1 - テストです

関連の記事

Visual Studio デバッグの方法
Visual Studio リファクタリングの方法

△上に戻る