2010-01-04 61 views
43

我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> 

但是,如果用戶不是自己機器上的管理員這會導致問題,因爲他們不會有「程序文件」寫入訪問。我怎樣才能得到類似%AppData%到NLog而不是BaseDir?

回答

69

您正在尋找的NLog special folders

例子:

...fileName="${specialfolder:folder=ApplicationData}/Program/file.txt"... 
+0

是的,但是如何使用它?我已經嘗試過,fileName =「$ {ApplicationData} /RentalEase/access.txt」,並且它靜靜地失敗。 – Malfist 2010-01-04 16:02:33

+0

我不記得我的頭頂,但它應該是這樣的: $ {specialfolder:folder = SPECIALFOLDERNAME} – 2010-01-04 16:10:09

+0

這不起作用,說它是無效的。 – Malfist 2010-01-04 16:12:15

4

$ {specialfolder:}的ApplicationData也適用

10

奧倫的答案應該是正確的答案。然而,在我的生活中,我無法使用nLog 2.0.0.0與我的.NET 4.0網站一起工作。最後我用簡單的

fileName="${basedir}app_data\logs\${shortdate}.log" 
+0

問題標題使用「AppData」,但我不認爲{..ApplicationData}映射到App_Data,我必須閱讀源代碼以進行仔細檢查。 – 2013-06-28 20:20:19

+1

這個問題和接受的答案是關於Windows特殊文件夾%appdata%,通常是C:\ Users \ \ AppData \ Roaming。似乎沒有ASP.net App_Data文件夾的特殊變量。 – angularsen 2015-06-26 23:24:13

0

以前的答案,幫助解決我遇到的問題,但幾年後,溶液現在正在V4.3有所不同。目錄和文件名與路徑組合在一起。

@ 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}"