我在Azure云中有一个Umbraco实例,如果内存正确可用,则为v4.7。我需要利用IIS日志记录来获取网站使用情况统计信息,但似乎存在限制。
我有多个不同的网站,都使用各种网站模板,但IIS日志似乎没有输出域名。如何让IIS输出域名?
下面是当前IIS日志捕获的示例(我知道这是一个BOT抓取网页,但我有真正的流量,但无法识别访问的网站):
2012-08-06 00:11:54 10.61.52.73 GET /保险/保险/ - 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 /保险/理由/ - 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 GET /保险/类型/ - 80 00:11:55 10.61.52.73 GET / 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.uk/technology/webmaster_information.htm)200 0 0 374
答案 0 :(得分: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