【WPF】log4net でログファイル出力

Uncategorized
389 words

を紹介するんですが、残念なお知らせです。

ホントは、Visual Studio のデバッグ実行で、出力ウインドウにログを出したかったんですが出来ませんでした。代替案としてログファイル出力の紹介となります。

供養記事ですね。

環境

  • Windows 11 Home 21H2
  • Visual Studio Community 2019
  • netcoreapp3.1
  • log4net 2.0.14

設定手順

NuGet パッケージインストール

NuGet で log4net のパッケージをインストールします。

アプリケーション構成ファイル追加

ファイル名は「log4net.config」で新規ファイルを作ります。

次の設定をコピペします。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<log4net>
<appender name="LogToFile" type="log4net.Appender.RollingFileAppender">
<appendToFile value="true" />
<StaticLogFileName value="false" />
<rollingStyle value="Date" />
<file value=".\log\trace-" />
<DatePattern value='yyyyMMdd".log"' />
<layout type="log4net.Layout.PatternLayout">
<ConversionPattern value="%date [%level] %message%n" />
</layout>
</appender>

<appender name="LogToConsole" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<ConversionPattern value="%date [%level] %message%n" />
</layout>
</appender>

<root>
<level value="ALL" />
<appender-ref ref="LogToFile" />
<appender-ref ref="LogToConsole" />
</root>
</log4net>
</configuration>

一応コンソールに出力する設定も入ってますが、WPFアプリだと機能しませんでした。

何か方法があれば教えてほしいです。

AssemblyInfo.cs

AssemblyInfo.cs に次の設定をコピペします。

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

使い方

クラスの先頭に次の1行を入れると、log4netが使えるようになります。

1
private static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

次のメソッドでログ出力できます。

1
2
3
4
logger.Debug("Debug Log");
logger.Info("Info Log");
logger.Warn("Warn Log");
logger.Error("Error Log");

実行するとlogフォルダが作られてその中に出力されます。

おわりに

ホントはこの出力ウインドウに出したかったんですよね…

どうやったら出せるんだろ。なぞです。