Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Nlog日志位置被代码覆盖,但仍记录在配置位置_C#_Nlog - Fatal编程技术网

C# 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

NLog版本-4.4.3

平台-.Net 4.5.2

当前NLog配置-


覆盖位置的代码

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");