2015-05-14 159 views
3

我在多項目解決方案中使用NLog。我將配置文件的filename屬性設置爲"${basedir}/logs/logFile.log",問題是:日誌目錄正在每個項目的主目錄中創建,因此每個項目都有自己的一組日誌。我想要的是整個解決方案的單個日誌目錄,所以基本上這意味着將filename設置爲basedir的父目錄。
我到底該怎麼做? "../${basedir}/logs/logFile.log"似乎不起作用,日誌仍然保存到相同的目錄。Basedir的父目錄 - NLog配置

回答

2

可以使用例如${specialfolder:folder=LocalApplicationData}/logs/logFile.log這將創建日誌中%USERPROFILE%\AppData\Local\logs

該解決方案也將在企業應用程序的工作,因爲這個文件夾擁有所有必要的用戶權限,以使應用程序編寫日誌。

+0

這是一個Web應用程序的,所以當它被部署到IIS我想保存在日誌中應用程序的主目錄,不在服務器管理員的配置文件文件夾中:) –

+2

即使對於Web應用程序,運行該應用程序的用戶也不應具有應用程序文件夾中的寫入權限。你爲什麼不在另一個地方創建一個特殊的文件夾?並在配置文件中指定該文件夾的真實路徑。例如:'D:\ Data \ MyApplication \ Logs' –

+0

要回聲@CristinaAlboni要點:日誌文件應該永遠不會進入應用程序目錄,這會引發潛在的安全問題。他們應該在一個單獨的日誌文件夾中,理想情況下在不同的驅動器(並且從來沒有系統(C :)),以便沒有機會過多的日誌文件可能會關閉服務器。 –

9

我有類似的情況。我需要/ logs /目錄作爲我項目實際目錄的兄弟。我發現,這對我的作品有:

fileName="${basedir}/../logs/logFile.log" 

我使用NLOG 2.1.0

+0

這並沒有什麼區別,至少在NLog的最新版本(4)中沒有區別。 – pookie