在NLog中使用AppData位置
我的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>
但是,如果用户不是他们机器上的pipe理员,则会导致问题,因为他们不具有对“程序文件”的写入访问权限。 我怎样才能得到像%AppData%
到NLog而不是BaseDir?
你正在寻找NLog的特殊文件夹 。
例:
...fileName="${specialfolder:folder=ApplicationData}/Program/file.txt"...
奥伦的答案应该是正确的答案。 但是,在我的生活中,我无法使用nLog 2.0.0.0使用我的.NET 4.0网站。 我结束了使用简单
fileName="${basedir}app_data\logs\${shortdate}.log"
$ {specialfolder:ApplicationData}也适用
之前的答案有助于解决我遇到的问题,但几年后,现在解决scheme在v4.3下有所不同。 目录和文件名与path组合在一起。
@theGecko的链接仍然是最新的语法,但是页面缺乏一个例子:
https://github.com/nlog/NLog/wiki/Special-Folder-Layout-Renderer
以下示例将文件myLog.log
写入当前用户应用程序数据漫游目录C:\USers\current.user\AppData\Roaming\My\Path\Somewhere
:
fileName="${specialfolder:dir=My/Path/Somewhere/:file=myFile.log:folder=ApplicationData}"