我有使用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