我有使用NLog的Windows窗体应用程序NET 4.5(VS 2013)。以编程方式在运行系统中更改NLog目标中的basedirir
我的目标:
<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项。
我想更改路径$ {BASEDIR} /日志在运行时,编程
我试试这个:
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;
}
不产生任何东西。 我也尝试使用LogManager.ReconfigExistingLoggers();
,但无法正常工作。
有什么建议吗?
作品'和'使用文件名=“$ {appsetting作品:名称= RutaLog} $ {} shortdate trace.log的“'。使用*** $ {appsetting:name = key} ***更清楚。 – Kiquenet