プロプログラマ -Flex,Air,C#,Oracle,PHP-

プログラマーを職業としてます。 Flex,Air,C#,Oracle,PHPの言語ノウハウを中心に情報発信していきます

[.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のインスタンスを明示的に作成する必要があると書いてありました。
もしかしたら、とどこかで問題が出るかもしれません。

 

== ランキングに参加しています。ぜひクリックお願いします ==

プログラム ブログランキングへ
にほんブログ村 IT技術ブログへ
にほんブログ村

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です