gpt4 book ai didi

c# - 基本 NLog 文件目标在 IIS 8 和 Windows Server 2012 下不工作

转载 作者:行者123 更新时间:2023-11-30 22:12:02 25 4
gpt4 key购买 nike

我无法让 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 在以前的部署中没有成功更新,所以 HttpModule 是以 IIS6 方式配置的...我不得不将它添加到模块部分,如下所示:https://stackoverflow.com/a/2935410/285678

很棒的是我刚刚添加了这个日志来尝试找出这个 HttpModule 没有按预期运行的原因,所以找出 NLog “不工作”的原因解决了这个问题(这是一个非常严重的问题,因为 HttpModule 与应用程序的安全系统有关!)

我试图关闭这个问题,因为它具有误导性,因为它根本不是 NLog 错误,但需要 50 票才能关闭!所以我会把它留给像我这样在绝望中在 StackOverflow 中提出“不太明智”问题的人的警告:-(

关于c# - 基本 NLog 文件目标在 IIS 8 和 Windows Server 2012 下不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19938501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com