在NLog中使用AppData位置

Mal*_*ist 47 nlog

我的NLog目标是这样的:

<targets>
  <target xsi:type="Console" name="console" 
    layout="${longdate}|${level}|${message}" />
  <target xsi:type="File" name="ErrorLog" fileName="${basedir}/error.txt"
          layout="${longdate}
          Trace: ${stacktrace} 
          ${message}" />
  <target xsi:type="File" name="AccessLog" fileName="${basedir}/access.txt"
          layout="${shortdate} | ${message}" />
</targets>
Run Code Online (Sandbox Code Playgroud)

但是如果用户不是他们机器上的管理员,这会导致问题,因为他们没有"程序文件"的写入权限.我怎样才能得到类似于%AppData%NLog而不是BaseDir的东西?

Ore*_*zor 79

您正在寻找NLog特殊文件夹.

例:

...fileName="${specialfolder:folder=ApplicationData}/Program/file.txt"...
Run Code Online (Sandbox Code Playgroud)


bka*_*aid 13

奥伦的回答应该是正确的答案.然而,对于我的生活,我无法使用nLog 2.0.0.0使用我的.NET 4.0网站.我最后简单地使用了

fileName="${basedir}app_data\logs\${shortdate}.log" 
Run Code Online (Sandbox Code Playgroud)

  • 这个问题和接受的答案是关于 Windows 特殊文件夹 %appdata%,通常是 C:\Users\&lt;user&gt;\AppData\Roaming。ASP.net App_Data 文件夹似乎没有特殊变量。 (2认同)

小智 6

$ {specialfolder:ApplicationData}也可以