我只是不能使NLog在Windows Server 2012 / IIS 8下可靠运行。这是一个Azure虚拟机(不是webrole),因此事情应该非常简单。最初,我有acync包装器,基于数据库的目标等。但是我已经将所有内容都剥离到了最低限度,似乎无法使其正常运行!
这是我的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"
>
<targets>
<target xsi:type="File"
name="nsec"
fileName="${basedir}app_data/logs/nsec_${shortdate}.log"
createDirs="true"
layout="${longdate}|${level:uppercase=true}|${logger}|${aspnet-user-identity}|${message}"
/>
</targets>
<rules>
<logger name="NSec" minlevel="Trace" writeTo="nsec"/>
</rules>
</nlog>
如您所见,这里没有任何幻想。目标文件应该已经写入./App_Data/Logs目录,但是大多数时候没有写入任何内容。有时某些内容会写入文件中……这是所有内容中最令人毛骨悚然的部分!
在Cassini和IIS Express本地都可以正常运行日志。
为了使NLog正常工作,我需要添加任何内容到我的web.config中吗?我什至没有使用ASP.NET包装器!
有人知道NLog和IIS8之间有任何不兼容吗?
更新
我已经在服务器上运行Process Monitor,并且意识到什至没有尝试写入,读取或查询日志文件。似乎完全完全忽略了NLog。我知道启动时会读取NLog.config文件,因为如果我输入了无效的配置,则在访问应用程序时会收到错误消息,因此NLog会解析该文件。问题在于,即使正在解析它,有时记录了某些内容,大多数情况下都不会发生,并且,通过使用Process Monitor的确认,并没有尝试访问/创建/写入日志文件。
具有讽刺意味的是,在Process Monitor上,我可以看到其他IIS应用程序没有问题地写入了自己的NLog文件。只是该特定应用程序无法记录日志,而仅在生产机器中!
我刚刚在Uwe Kein的帮助下发现了他,他建议我使用Process Monitor来查看权限是否存在任何问题,实际上,甚至从未访问过日志文件。这让我想知道为什么...而且我只是意识到作为NSec记录器来源的HttpModule根本没有运行,因此,实际上实际上没有任何日志。
发生此问题的原因是,在先前的部署中未成功更新目标计算机上的web.config,因此以IIS6方式配置了HttpModule ...我必须将其添加到模块部分,如下所示:https:// stackoverflow .com / a / 2935410/285678
这样做的好处是,我刚刚添加了此日志以尝试查找此HttpModule的行为不符合预期的原因,因此找出NLog为何“不起作用”的原因解决了此问题(这是一个非常严重的问题,因为HttpModule与应用程序的安全系统有关!)
我试图结束这个问题,因为它具有误导性,因为它根本不是NLog错误,但需要50票才能解决!因此,我会将其作为警告,向像我这样绝望的人在StackOverflow中问“不是很明智”的问题发出警告:-(
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句