[.NET] [NLog] ログ出力フォルダにコンピュータ名を指定する
.NET用のログライブラリ「NLog」です。
ログライブラリと言えば、Log4xxxが有名ですが、今はあえてNLogを使っています。
特別な思い入れはありませんが、なんとなく使いやすいように思います。NuGetから簡単にインストールできますし。
とはいえ、できることは基本的に変わりません。
このNLogでログファイルを出力する際、フォルダ名にコンピュータ名を指定したいと思い、いろいろやってみた結果うまくいったので紹介します。
configファイルでコンピュータ名をセットするパラメータはないようだったので、プログラム側で動的にセットします。
▼Nlog.configのフォルダ指定
${var:xxx}と指定した部分を実行時に置き換える
<!-- ログファイルの出力先 --> <variable name="logDir" value="c:/logs/${var:pcname}/"/> <targets> <target fileName="${logDir}test.${date:format=yyyyMMdd}.log" >
▼プログラム側の実装
システム開始時にコンピュータ名をセットする
App.xaml.csなど
private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); private void Application_Startup(object sender, StartupEventArgs e) { // ログの出力フォルダパスにコンピュータ名を指定する (NLog.configの`${var:pcname}`を置き換える) logger.Factory.Configuration.Variables.Add("pcname", Environment.MachineName); logger.Factory.ReconfigExistingLoggers();
※このやり方で出力はできましたが、他のサイトでは、loggerのインスタンスを明示的に作成する必要があると書いてありました。
もしかしたら、とどこかで問題が出るかもしれません。
== ランキングに参加しています。ぜひクリックお願いします ==
[Excel] セル内改行を簡単に取り除く [C#] null合体演算子