設定方法が複数あって混乱してきたのでメモ。こうすればとりあえず使えたよというとこのみ。
環境
Windows 8.1
Visual Studio 2017
共通
NuGetでlog4net (2.0.8)をインストール
コンソールアプリ
.Net Framework 4.6.1
log4netの設定ファイル(log4net.config)を使用する場合
AssemblyInfo.csで設定
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");
埋め込みリソースから設定ファイルを読み込む
log4netの設定ファイル(log4net.config)を使用しない場合
ソース中でlog4netの設定する
.NET Core 2.1
.net coreだとAssemblyInfo.csがない。また「AssemblyInfo.csを使わない場合」もそのままでは使えなずひと手間必要。
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とかあるみたい。そのうち見てみる。