【发布时间】:2014-01-23 11:45:17
【问题描述】:
我希望看到 http 请求到达我在 IIS 中的云服务时的内部结构。我查看了很多信息,但不太了解如何启用它。例如,this site 提供了一些有用的信息。在该页面之后,我所取得的成就是:
-
在 Visual Studio 中连接到我的云服务并更新了日志 目录传输时间为 1 分钟(我尝试了不同的缓冲区 大小,但没有效果)。
-
在 Visual Studio 中选择了云服务并选择查看诊断数据。然后在 Windows Azure 日志中选择 IIS 日志 目录:
-
此时我收到 404 错误:
所以,虽然我已经设置了接收日志文件的可能性,但它们实际上并没有被生成。如果我可以在不重新部署的情况下完成这一切,那将是理想的,但我认为我可能需要在 web.config 中启用某些东西——只是不确定是什么。我已经阅读了this answer 中提供的链接,但是除了我已经完成的工作之外,找不到我真正需要启用的内容。任何指针都会很棒,如果更容易的话,很乐意尝试不同的(非 IIS)方法。
更新
因此,根据 MikeWo 和 kwill 的有用建议,我做了一些进一步的挖掘工作。首先,我确保存储帐户配置正确。似乎确实如此,首先因为这是我用于我的 Web 应用程序的相同帐户,其中用户上传的文件正确出现,其次因为我使用与 IIS 相同的过程启用了基础架构日志,并且日志出现了:
这让我觉得一开始就没有生成 IIS 日志。所以,我使用远程桌面连接到服务器。使用 IIS 管理器,我首先查看了服务器的日志记录:
日志文件位置不存在。因此,似乎该文件夹甚至还没有创建,并且这里没有记录任何内容。 接下来,我查看了我网站的日志记录:
在这种情况下,有日志文件,但它们来自一个多月前。最后,我按照 here 和 here 的说明操作,希望能够提高网站的日志记录级别。
appcmd set config /section:httpLogging /dontLog:False
appcmd.exe set config "<mysite>" -section:system.webServer/httpLogging /dontLog:"false" /commit:apphost
appcmd.exe set config "<mysite>" -section:system.webServer/httpLogging /selectiveLogging:"LogAll" /commit:apphost
命令成功,但这似乎没有效果,我没有看到任何更多的日志出现在我的 IIS 文件夹中。
然后我尝试了:
appcmd set config /section:httpLogging /dontLog:False /commit:WEBROOT
并收到:
说明:无法读取配置节“system.webServer/httpLogging”,因为它缺少节声明
我不太热衷于更改服务器上的配置文件,但如果我能得到一些保证,我会走上正确的道路。此外,我意识到这些变化不会持续存在,但我只是想看看我是否能得到任何工作。
这些是 Visual Studio 中的诊断设置,它使用与我的应用程序相同的存储帐户,可以正常工作:
很明显,IIS 诊断文件出现在要传输到存储的正确位置:
解决方案
kwill's answer最终让我走上了正轨。 IIS 文件夹确实存在,但最后一个日志来自一个多月前。我添加了一个虚拟文件,它出现在 blob 中。我将添加一个单独的问题,说明为什么没有更新 IIS 日志。
【问题讨论】: