VB.NETのlog4netでテキストにログを出力するサンプルです。
確認環境 ・Microsoft Visual Studio Community 2019 |
目次
サンプル | log4netとは |
1.log4netをインストールする | |
2.設定ファイルを作成する | |
3.ソースコードの作成 | |
4.出力ファイルの確認 |
log4netとは
- log4netは、ログを出力するライブラリです。
- log4jと同じApacheソフトウェア財団が作成しています。
- 以下は、log4netのドキュメントのfeaturesのリンクです。
https://logging.apache.org/log4net/release/features.html
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 - テストです
関連の記事