NLog를 사용하는 Windows Forms 앱 NET 4.5 (VS 2013)가 있습니다.런타임에 NLog 대상의 basedir을 프로그래밍 방식으로 런타임에
<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();
도 사용해 보았지만 작동하지 않습니다.
제안 사항?
'fileName에 = "$ {VAR : 기본 디렉토리}/로그/$ {shortdate} Trace.log"을 사용하여 작품'와'fileName에 = "$ {appsetting 사용하여 작동 : 이름을 = RutaLog} $ {shortdate} Trace.log "'. *** $ {appsetting : name = key} ***을 사용하는 것이 더 명확합니다. – Kiquenet