1

如果内存服务正确,我在 Azure 云中有一个 Umbraco 实例,v4.7。我需要利用 IIS 日志记录来获取网站使用统计信息,但似乎有一个限制。

我有多个不同的网站,都使用各种网站模板,但 IIS 日志似乎没有输出域名。如何让 IIS 输出域名?

以下是当前 IIS 日志捕获的示例(我知道这是一个爬取网页的 BOT,但我有真正的流量但无法识别访问的是哪个网站):

2012-08-06 00:11:54 10.61.52.73 GET /insurance/insurance/ - 80 - 46.4.38.67 InnovantageBot/1.0+(http://www.innovantage.co.uk/technology/webmaster_information.htm) 200 0 0 390 2012-08-06 00:11:55 10.61.52.73 GET /insurance/reason/ - 80 - 46.4.38.67 InnovantageBot/1.0+(http://www.innovantage.co.uk/technology/webmaster_information.htm) 200 0 0 578 2012-08-06 00:11:55 10.61.52.73 获取 /insurance/type/ - 80 00:11:55 10.61.52.73 获取 /life/qa/ - 80 - 46.4.38.67 InnovantageBot/1.0+( http://www.innovantage.co.uk/technology/webmaster_information.htm) 200 0 0 359 2012-08-06 00:11:55 10.61.52.73 GET /life/reasons/ - 80 - 46.4.38.67 InnovantageBot/1.0 +(http://www.innovantage.co.uk/technology/webmaster_information.htm) 200 0 0 328 2012-08-06 00:11:57 10.61.52.73 GET /insurance/glossary/ - 80 - 46.4.38.67 InnovantageBot /1.0+(http://www.innovantage.co.英国/技术/webmaster_information.htm)200 0 0 374

4

1 回答 1

1

在您的 WebRole.cs 中,您可以调整 IIS 和在 IIS 中运行的每个站点。您可以选择应记录哪些字段,我认为您正在寻找该LogExtFileFlags.Host字段:

using (var manager = new ServerManager())
{
    var siteName = RoleEnvironment.CurrentRoleInstance.Id + "_Web";
    var site = manager.Sites[siteName];
    site.LogFile.LogExtFileFlags |= LogExtFileFlags.Host;
    manager.CommitChanges();
}

确保您的角色在提升模式下运行,在您的ServiceDefinition.csdef文件中进行更改:

<Runtime executionContext="elevated" />

您还应该能够使用appcmd.exe更改此设置:

http://www.iis.net/ConfigReference/system.applicationHost/sites/siteDefaults/logFile#005

于 2012-08-07T14:57:41.510 回答