trsing’s diary

勉強、読んだ本、仕事で調べたこととかのメモ。

log4netの設定

設定方法が複数あって混乱してきたのでメモ。こうすればとりあえず使えたよというとこのみ。

環境

Windows 8.1
Visual Studio 2017

共通

NuGetでlog4net (2.0.8)をインストール
コンソールアプリ

.Net Framework 4.6.1

log4netの設定ファイル(log4net.config)を使用する場合

AssemblyInfo.csで設定

garafu.blogspot.com

AssemblyInfo.csに

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

を追加

ソース中でloggerを取得して使う

var logger = log4net.LogManager.GetLogger(System.Reflection.Assembly.GetExecutingAssembly().FullName);
logger.Debug("Debug");

AssemblyInfo.csを使わない場合

ソース中で設定ファイルを読み込んで使用

log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo("log4net.config"));
var logger = log4net.LogManager.GetLogger(System.Reflection.Assembly.GetExecutingAssembly().FullName);
logger.Fatal(".Net Framework");

埋め込みリソースから設定ファイルを読み込む

mseeeen.msen.jp

log4netの設定ファイル(log4net.config)を使用しない場合

ソース中でlog4netの設定する

kitunechan.hatenablog.jp

.NET Core 2.1

.net coreだとAssemblyInfo.csがない。また「AssemblyInfo.csを使わない場合」もそのままでは使えなずひと手間必要。

stackify.com

var logger = log4net.LogManager.GetLogger(System.Reflection.Assembly.GetExecutingAssembly().GetType());
var logrepository = log4net.LogManager.GetRepository(Assembly.GetEntryAssembly());
log4net.Config.XmlConfigurator.Configure(logrepository, new FileInfo("log4net.config"));
logger.Info(".net core log4net");

その他ログについて

NLogとかMicrosoft.Extensions.Loggingとかあるみたい。そのうち見てみる。