2012-05-15 24 views
4

我在我的MVC項目中使用Nlog如何在MVC中使用Nlog將消息記錄到txt文件?

我想實現的是在控制器中執行操作方法時記錄消息。並且日誌消息應該出現在txt文件中。但我似乎無法得到它的工作

我已經安裝Nlog到我的參考。

我有Nlog.Config具有以下配置:

<?xml version="1.0" ?> 
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <targets> 
     <target name="file" 
       xsi:type="File" 
       layout="${longdate} ${logger} ${message}" 
       fileName="${basedir}/logs/logfile.txt" 
       keepFileOpen="false" 
       encoding="iso-8859-2" /> 
    </targets> 
    <rules> 
     <logger name="*" 
       minlevel="Debug" 
       writeTo="file" /> 
    </rules> 
</nlog> 

,然後在我的控制我的POST操作方法裏面我有以下代碼:

[HttpPost] 
public ActionResult Edit(int id, CreateNKIphase1ViewModel model) 
{ 
    Logger logger = LogManager.GetCurrentClassLogger(); 
    logger.Info("Test message"); 

    //code.... 
} 

我在哪裏可以找到TXT文件?

這是爲什麼不工作:S

回答

2

爲什麼不fileName屬性設置爲一個已知的路徑和名稱,而不是使用${basedir}格式?

fileName="C:\Temp\logfile.txt" 

這樣你就會知道文件應該放在哪裏。一旦你將這部分記錄下來,你就可以開始添加更高級的技術。

6

如果您的應用程序使用應用程序池標識在IIS中運行,則需要將文件夾權限授予該標識。

  • 創建「日誌」文件夾。
  • 在IIS管理器中,找到應用程序正在使用的應用程序池標識。
  • 在'logs'文件夾屬性對話框中,嚮應用程序池標識授予寫入權限。

當您輸入應用程序池標識的名稱時,您需要包含IIS APPPOOL。例如,如果應用程序池標識爲ASP.NET v4.0,請輸入名稱IIS APPPOOL\ASP.NET v4.0。另外,請確保位置是本地計算機,而不是網絡域。

0

這是完美的工作,但asp.net應用程序的$ {basedir}與典型的桌面應用程序不同。我相信這個文件可以從離您的應用程序集合不遠的臨時文件夾中獲得。

您既可以定義自己的變量,也可以定義直接訪問「日誌」文件夾。確保應用程序可以將日誌寫入此文件夾。使用this答案,它很好地描述你應該做的

0

如果調試模式運行你的應用程序,你可以通過這個路徑找到它:

"%PARTITION%:\\...PATH TO YOUR APP...\bin\Debug\\... 
相關問題