में एनएलओजी लक्ष्य में एनएलओजी लक्ष्य में बदलें आधारित मेरे पास एनएलओजी का उपयोग कर विंडोज फॉर्म ऐप नेट 4.5 (वीएस 2013) है।प्रोग्रामटाइम
<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();
का उपयोग करने का प्रयास करता हूं, लेकिन काम नहीं कर रहा हूं।
कोई सुझाव?
वर्क्स का उपयोग कर 'fileName =" $ {var: basedir}/लॉग/$ {shortdate} Trace.log "' और का उपयोग कर काम करता है 'fileName =" $ {appsetting: नाम = RutaLog} $ {shortdate} Trace.log "'। *** $ {appsetting: name = key} *** का उपयोग करना अधिक स्पष्ट रूप से है। – Kiquenet