C#のlog4netでテキストにログを出力するサンプルです。
確認環境 ・Microsoft Visual Studio Community 2019 |
目次
サンプル | log4netとは |
1.dllファイルを取得する | |
2.dllファイルを参照に追加する | |
3.設定ファイルを作成する | |
4.ソースコードの作成 | |
5.出力ファイルの確認 |
log4netとは
- log4netは、ログを出力するライブラリです。
- log4jと同じApacheソフトウェア財団が作成しています。
- 以下は、log4netのドキュメントのfeaturesのリンクです。
https://logging.apache.org/log4net/release/features.html
1.dllファイルを取得する
下記のサイトからlog4net-2.0.8-bin-newkey.zipをダウンロードします。
Apache log4netのサイト
https://logging.apache.org/log4net/download_log4net.cgi
ダウンロードしたzipを展開し以下のファイルを任意の場所に配置します。
・log4net.dll
2.dllファイルを参照に追加
log4net.dllを参照に追加します。
1.参照を右クリックし、「参照の追加」をクリックします。
2.参照マネージャーが表示されます。
「参照」ボタンを押すとファイル選択ダイアログが表示されるのでlog4net.dllを選択します。
3.参照の配下にlog4netが追加されました。
3.設定ファイルを作成する
1.AssemblyInfo.csを修正します。
AssemblyInfo.csが表示されていない場合は、「プロジェクト」→「すべてのファイルを表示」をクリックします。
2.AssemblyInfo.csの一番最後の行に以下を追加します。
xmlファイルの置き場所を./log/Log4net.xmlとしました。
// Log4Net用設定ファイル
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "./log/Log4net.xml", Watch = true)]
3.logフォルダを作成し配下にLog4net.xmlを作成します。空ファイルを作成し名称をつけるやり方で問題ありません。
4.log4net.xmlのプロパティで「出力ディレクトリにコピー」を「常にコピー」にセットします。
5.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
4.ソースコードの作成
ログを出力するコードです。
using log4net;
class Test1
{
static void Main()
{
Print1();
}
public static void Print1()
{
ILog log = LogManager.GetLogger(
System.Reflection.MethodBase.GetCurrentMethod().Name);
string str1 = "テストです";
log.Debug(str1);
log.Info(str1);
log.Warn(str1);
log.Error(str1);
log.Fatal(str1);
}
}
11行目は、ログクラスのインスタンスを取得しています。
12行目は、リフレクションです。GetCurrentMethod().Nameで現在のメソッド名を出力します。
14行目以降は、XMLで指定されたログのみ出力されます。
5.出力ファイルの確認
1.実行ファイルがあるフォルダにlogフォルダがあります。(プロジェクトのフォルダ>bin>Debug)
2.logフォルダの中は、Log4net.xmlとログファイルが出力されます。
3.ログファイルの中身は以下の通りです。
2020-09-24 21:56:05,949 [1] [INFO ] Print1 - テストです
2020-09-24 21:56:05,959 [1] [WARN ] Print1 - テストです
2020-09-24 21:56:05,959 [1] [ERROR] Print1 - テストです
関連の記事