WPFでLog4Netを使ってログを残すようにする

手順は至って簡単.

  1. NugetでLog4netを容易
  2. ソリューション>プロジェクト>Properties>AssenblyInfo.csの末尾に設定追加
    または
    ソースコード中に記述
  3. log4netの設定ファイルを追加
  4. 必要なところにLogの文字列を挿入

以上.

  1. NugetでのLog4Netの取得は簡単

「ツール」>「NuGetパッケージマネージャ」>「ソリューションのNuGetパッケージの管理」

にて以下を探してインストール.
log4net.PNG

2. AssemblyInfo.csまたはコード中への記入.

以下のケースのどちらかを行う.

AssemblyInfo.cs(ソリューション>プロジェクト>Propertiesにあります)の場合は、

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

コード中で動的に設定を決める場合

log4net.GlobalContext.Properties[“LogFileName”] = logPath;
log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(“../../log4net.config”));

3. プロジェクトの一番上のディレクトリにlog4net.configを追加(上の2.で記している設定ファイル)

log4net.configは以下にあるようなものを書き込む.log4net.configの中身の詳細は他の方のブログに書かれているのでそちら参照.
以下の{LogFileName}は2.でコード中に動的に決める要素を入れている場合の表現であることに注意.
以下は2.でコード実装していることを前提

<?xml version=”1.0″ encoding=”utf-8″ ?>
<!– [log4net.config] –>
<configuration>
<configSections>
<section name=”log4net”
type=”log4net.Config.Log4NetConfigurationSectionHandler, log4net” />
</configSections>

<appSettings>
<add key=”log4net.Internal.Debug” value=”true” />
</appSettings>

<log4net>
<appender name=”ConsoleAppender” type=”log4net.Appender.ConsoleAppender”>
<layout type=”log4net.Layout.PatternLayout”>
<param name=”ConversionPattern” value=”%d [%t] %-5p %c – %m%n” />
</layout>
</appender>

<appender name=”DailyFileAppender”
type=”log4net.Appender.RollingFileAppender”>
<param name=”RollingStyle” value=”Date” />
<param name=”File” type=”log4net.Util.PatternString” value=”%property{LogFileName}/” />
<param name=”DatePattern” value=’yyyyMMdd”.log”‘ />
<param name=”StaticLogFileName” value=”false” />
<param name=”AppendToFile” value=”true” />
<layout type=”log4net.Layout.PatternLayout”>
<conversionPattern value=”%-5level %date{yyyy/MM/dd HH:mm:ss, fff} [%thread] %logger – %message%newline” />
</layout>
</appender>
<root>
<level value=”ALL” />
<appender-ref ref=”ConsoleAppender” />
<appender-ref ref=”DailyFileAppender” />
</root>
</log4net>
</configuration>

4. 準備は完了したので、後は使うだけ.

loggerのインスタンスを取得して、好きなレベルのログを残す.
ログファイルは上で指定したディレクトリに指定したファイル名で残される.
以下のようにloggerのインスタンスを準備して

ILog logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

以下のように好きなレベルで使う.

logger.Debug(msg);
logger.Warn(msg);
logger.Info(msg);
logger.Error(msg);
logger.Fatal(msg);

 

これでokなはず.

About the author

コメントを残す