我已經在幾個控制檯應用程序上使用NLog,沒有任何問題,但這是我第一次在MVC Web應用程序中使用它。當我嘗試登錄到文件時,沒有任何反應。沒有錯誤,也沒有創建任何日誌文件。當我在本地瀏覽應用程序時,我也不會收到任何錯誤。NLog不在MVC應用程序中創建日誌?
我做的第一件事是確認我的NLog.config文件的屬性在「複製到輸出」屬性中設置爲「始終複製」。我甚至通過NuGet卸載了NLog,然後再次安裝它,並關閉VS並再次打開項目。
我已經做了一些搜索,我發現的唯一真正建議是先創建文件夾位置,然後檢查應用程序池的權限。我創建了文件夾位置,但似乎也沒有工作。我通過Visual Studio 2015中的Debug模式運行它,它自動啓動本地Web服務器,所以我不知道如何找出它用於寫入文件位置的服務。
在下面的例子中,我可以在我的控制器內的ActionResult上放置一個斷點,並在「gate」參數中看到一個正在傳遞的值。我儘管對我的測試記錄器,並沒有得到任何錯誤。我查看我的日誌位置,並且沒有創建日誌文件。
任何人有什麼建議我可以嘗試?
NLog.config文件
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
autoReload="true"
throwExceptions="true">
<variable name="LogDirBase" value="D:/logs/RampInfo"/>
<variable name="LogYear" value="${date:format=yyy}"/>
<variable name="LogMonth" value="${date:format=MM}"/>
<variable name="LogDay" value="${date:format=dd}"/>
<variable name="LogFileShortDate" value="${date:format=yyyy-MM-dd}"/>
<targets>
<target name="DefaultTarget"
xsi:type="File"
fileName="${LogDirBase}/${LogFileShortDate}.log"
encoding="utf-8"
layout="${longdate} | ${callsite} | ${message}"
maxArchiveFiles="14"
/>
</targets>
<rules>
<logger name="defaultLogger" minlevel="Debug" writeTo="DefaultTarget" />
</rules>
</nlog>
我的控制器
public class RampController : Controller
{
private static Logger logger = LogManager.GetCurrentClassLogger();
// GET: GateInfo
public ActionResult Gate(string gate)
{
logger.Debug("Start action result. Gate: " + gate);
}
在調試模式中本地IIS實例使用您的當前登錄的應用程序池的用戶,所以想必你有權寫入到指定的文件夾,但也許值得一檢查 –
也可以嘗試切換'/'來' '\\'' –
請參閱http://stackoverflow.com/questions/23729629/why-is-the-basedir-nlog-configuration-not-working/23736348#23736348 –