【发布时间】:2015-11-03 21:12:08
【问题描述】:
我在一些控制台应用程序上使用过 NLog 没有任何问题,但这是我第一次在 MVC Web 应用程序上使用它。当我尝试登录文件时,没有任何反应。没有错误,也没有创建任何日志文件。当我在本地单步执行该应用程序时,我也没有收到任何错误。
我做的第一件事是确认我的 NLog.config 文件的属性在“复制到输出”属性中设置为“始终复制”。我什至通过 NuGet 卸载了 NLog,然后再次安装它以及关闭 VS 并再次打开项目。
我进行了一些搜索,发现唯一真正的建议是先创建文件夹位置,然后检查应用程序池的权限。我创建了文件夹位置,但这似乎也不起作用。我在 Visual Studio 2015 中通过调试模式运行它,它会自动启动本地 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 实例使用您当前的登录作为 AppPool 用户,因此您可能有权写入指定的文件夹,但可能值得一试
-
还可以尝试将
/切换为\\
标签: c# asp.net-mvc asp.net-mvc-4 nlog