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

アプリ開発

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

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

供養記事ですね。

スポンサーリンク

環境

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

設定手順

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

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

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

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

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

<?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 に次の設定をコピペします。

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

使い方

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

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

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

logger.Debug("Debug Log");
logger.Info("Info Log");
logger.Warn("Warn Log");
logger.Error("Error Log");

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

おわりに

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

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

タイトルとURLをコピーしました