C# Nlog日志位置被代码覆盖,但仍记录在配置位置
NLog版本-4.4.3 平台-.Net 4.5.2 当前NLog配置-C# Nlog日志位置被代码覆盖,但仍记录在配置位置,c#,nlog,C#,Nlog,NLog版本-4.4.3 平台-.Net 4.5.2 当前NLog配置- 覆盖位置的代码 LogManager.ReconfigExistingLoggers(); var target = (FileTarget)LogManager.Configuration.FindTargetByName<AsyncTargetWrapper>("logfile").WrappedTarget; target.FileName = $@"..\..\..\..\logs\Foobar.l
覆盖位置的代码
LogManager.ReconfigExistingLoggers();
var target = (FileTarget)LogManager.Configuration.FindTargetByName<AsyncTargetWrapper>("logfile").WrappedTarget;
target.FileName = $@"..\..\..\..\logs\Foobar.log";
LogManager.reconfigeExistingLogger();
var target=(FileTarget)LogManager.Configuration.FindTargetByName?
没有
请发布完整的异常详细信息(消息、堆栈跟踪、内部异常)
也不例外
有什么解决办法吗?是/否
重新启动服务/应用程序
是否有一个版本可以使用它?
不知道。这是我们开始使用并坚持的版本
你能帮我们写一个单元测试吗?
单元测试不会有帮助,因为这是一个间歇性的场景
您可以自动重新加载(
),而不是直接执行目标查找和修改目标属性。然后我建议使用NLog布局逻辑
<nlog autoReload="true" xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets async="true">
<target name="logfile"
xsi:type="File"
fileName="${gdc:item=logFile:whenEmpty=log/${processname}.log}" />
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="logfile" />
</rules>
</nlog>
使用GDC也可以很好地处理autoReload=true
,无需调用LogManager.reconfigeExistingLoggers()
在Github上打开-+1谢谢Julian。我将使用前一个选项-从配置中删除自动加载
,因为这将修复现有的应用程序,而无需更改代码。我很快会接受这个答案:)
NLog.GlobalDiagnosticsContext.Set("logFile", $@"..\..\..\..\logs\Foobar.log");