NLogを使用してWindowsフォームアプリケーションNET 4.5(VS 2013)を使用しています。実行時にプログラムでNLogターゲットの基底を変更します
<target name="asyncFileLog" xsi:type="AsyncWrapper">
<target name="logfileTrace" xsi:type="File" fileName="${basedir}/logs/${shortdate}Trace.log" layout="${longdate} ${message}" lineEnding="Default"/>
</target>
<target name="asyncFileError" xsi:type="AsyncWrapper">
<target name="logfileError" xsi:type="File" fileName="${basedir}/logs/${shortdate}Error.log" layout="${longdate} ${message} ${exception:format=tostring}" lineEnding="Default"/>
</target>
LogManager.Configuration.AllTargets.ToList();
リターン4つの項目ではなく、2つの項目:
私は目標を持っています。
var rutaLogs = ConfigurationManager.AppSettings["RutaLog"];
if (!Directory.Exists(rutaLogs)) return;
var list = LogManager.Configuration.AllTargets.ToList();
foreach (var target in list)
{
FileTarget fileTarget = null;
var wrapperTarget = target as WrapperTargetBase;
// Unwrap the target if necessary.
if (wrapperTarget == null)
{
fileTarget = target as FileTarget;
}
else
{
fileTarget = wrapperTarget.WrappedTarget as FileTarget;
continue;
}
var value = fileTarget.FileName.ToString();
value = value.Replace("${basedir}/logs/", rutaLogs);
fileTarget.FileName = value;
}
ではない何かを生成します。
は私が
私はこれを試してみてくださいプログラムで、実行時にパスに$ {BASEDIR} /ログを変更します。 LogManager.ReconfigExistingLoggers();
も試してみましたが、動作しません。
提案がありますか?
ワークス 'ファイル名は= "$ {VAR:BASEDIR} /ログ/ $ {shortdate}のtrace.log" を使用して'と 'ファイル名が=" $ {のAppSettingを使用して動作します。名前= RutaLog} $ {shortdate} Trace.log "。 *** $ {appsetting:name = key} ***を使用するとより明確になります。 – Kiquenet