スポンサーリンク

[C#] log4netでログ出力を行う

概要

log4netはログ出力を行うライブラリで、これを使ってC#のプログラムのログ出力を行います。

log4netの導入手順

まずは、log4netを自分のプロジェクトに導入する必要があります。

Visual Studioを開き、ソリューションの右クリックメニューから「ソリューションのNuGetパッケージ管理」を選択します。

log4netで検索して、log4netのインストールを行います。

インストールが完了すると、参照やpackages.configを見ると、パッケージがインストールされていることが分かります。

実践

log4net.xmlの作成

プロジェクトの直下に、log4net.xmlファイルを作成します。

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

			<appendToFile value="true" />
			<StaticLogFileName value="false" />

			<rollingStyle value="Date" />
			<file value=".\log\trace-" />
			<DatePattern value='yyyyMMdd".log"' />

			<filter type="log4net.Filter.LevelRangeFilter">
				<param name="LevelMin" value="INFO" />
				<param name="LevelMax" value="Error" />
			</filter>
			<layout type="log4net.Layout.PatternLayout">
				<ConversionPattern value="%date [%level] %message%n" />
			</layout>
		</appender>
		<root>
			<level value="ALL" />
			<appender-ref ref="log4net" />
		</root>
	</log4net>
</configuration>

上記のような内容で、ログ出力の設定を入力します。
log4netのパラメータは多々あるのでググってみてください。

また、ビルド時にlog4net.xmlを出力するように、プロパティの設定「出力ディレクトリにコピー」を常にコピーするに設定変更します。

AssemblyInfo.csにlog4net.xmlの設定

以下を、Properties\AssemblyInfo.csのファイルに追記

[assembly: log4net.Config.XmlConfigurator(Watch = true, ConfigFile = "log4net.xml")]

ログ出力実装

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleTest1
{
    internal class Program
    {
        private static readonly log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
        static void Main(string[] args)
        {
            logger.Debug("デバッグ");
            logger.Info("情報");
            logger.Warn("警告");
            logger.Error("エラー");
            logger.Fatal("致命的障害");

        }
    }
}

実行結果

2021-12-31 18:00:39,648 [DEBUG] デバッグ
2021-12-31 18:00:39,656 [INFO] 情報
2021-12-31 18:00:39,656 [WARN] 警告
2021-12-31 18:00:39,656 [ERROR] エラー
2021-12-31 18:00:39,656 [FATAL] 致命的障害

loggerを使って、テキストにログ出力することができました。

C#
スポンサーリンク
シェアする
trelab