C# log4netでテキストにログを出力する

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

確認環境
・Microsoft Visual Studio Community 2019

目次

log4net

 

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を修正します。

 

2.一番最後の行に以下を追加します。

// Log4Net用設定ファイル
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "D:\\dll\\Log4net.xml", Watch = true)]

 

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

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <log4net>
		<appender name="Console1" type="log4net.Appender.ConsoleAppender">
			<layout type="log4net.Layout.PatternLayout">
				<!-- Pattern to output the caller's file name and line number -->
				<conversionPattern value="%date %5level [%thread] (%file:%line) - %message%newline" />
	        </layout>
			<filter type="log4net.Filter.LevelRangeFilter">
                <param name="LevelMin" value="INFO" />
                <param name="LevelMax" value="Error" />
			</filter>
		</appender>

        <appender name="testlog1" type="log4net.Appender.FileAppender">
			<File value="D:\\dll\\testlog1.log" />
			<AppendToFile value="true" />
			<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="Console1" />
          <appender-ref ref="testlog1" />
        </root>
	</log4net>
</configuration>

4行目は、コンソールに出力するログの設定です。
15行目は、ファイルに出力するログの設定です。
appenderタグで一括です。4~13行目を削除すればコンソールにログは出力されません。

5~8行目は、ログの文言の設定です。
9~11行目は、出力するログの種類です。INFOからErrorまで出力します。
debug – info – warn – error – fatalとなっています。
30,31行目で、上記2つのログを呼び出しています。

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

 

4.ソースコードの作成

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

using System;
using System.Collections.Generic;
using log4net;

class Test1
{
    static void Main()
    {
        ILog log = 
            LogManager.GetLogger(
                System.Reflection.MethodBase
                .GetCurrentMethod().DeclaringType);

        string a = "テスト";

        log.Debug(a);
        log.Info(a);
        log.Warn(a);
        log.Error(a);
        log.Fatal(a);
    }
}

9行目は、ログクラスのインスタンスを取得しています。
16-20行目は、ログをテキストに出力します。

5.出力ファイルの確認

testlog1.logファイルの中身は以下の通りです。

2019-10-20 16:10:34,600 [1] [INFO ] Test1 - テスト
2019-10-20 16:10:34,612 [1] [WARN ] Test1 - テスト
2019-10-20 16:10:34,613 [1] [ERROR] Test1 - テスト

コンソールには以下のように表示されます。

関連の記事

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

△上に戻る