Skip to content

【Azure 云服务】Azure Cloud Service 为 Web Role(IIS Host)增加自定义字段 (把HTTP Request Header中的User Agent字段增加到IIS输出日志中)

LuBu0505 edited this page Oct 13, 2021 · 1 revision

问题描述

把Web Role服务发布到Azure Cloud Service后,需要在IIS的输出日志中,把每一个请求的HTTP Request Header中的User-Agent内容也输出到日志中。通过Cloud Service(云服务)如何实现呢?

解决方案

方案一(临时):Cloud Service WebRole是Host在IIS中,所以可以通过对IIS的Logging设置就可以(RDP到VM中修改)

1:RDP到云服务的实例上,搜索IIS Manager 

2:打开之后,找到云服务实例,点击Logging。 如下截图所示: No alt text provided for this image

3:打开之后,在Log File 里面的Format 选择W3C ,点击Select Fields,进行添加自定义字段 No alt text provided for this image

4:修改完成后,新生成的IIS日志中就会包含列名为UUID,内容为User-Agent的内容。 No alt text provided for this image

方案二:通过Cloud Service的启动任务对IIS Logging进行设置(需重新部署一次云服务)

1:在Cloud Service中设置启动任务,在WebRole项目的ServiceDefinition.csdef文件中加入 Startup 内容:

<Startup>
   <Task commandLine="Startup.cmd" executionContext="limited" taskType="simple" >
       <Environment>
           <Variable name="MyVersionNumber" value="1.0.0.0" />
       </Environment>
   </Task>
</Startup>

2: 在项目根目录中添加文件 Startup.cmd,文件内容为:

d /d "%~dp0"

%windir%\system32\inetsrv\appcmd.exe set config -section:system.applicationHost/sites /+"siteDefaults.logFile.customFields.[logFieldName='UUID',sourceName='User-Agent',sourceType='RequestHeader']" /commit:apphost >> "%TEMP%\StartupLog.txt" 2>&1

exit /b 0

PS: 通过修改IIS config的方式来配置Loggin中的自定义日志字段

3: 重新部署整个Cloud Service,即可生效。

参考资料

如何配置和运行 Azure 云服务(经典)的启动任务https://docs.microsoft.com/zh-cn/azure/cloud-services/cloud-services-startup-tasks#example-of-a-startup-task

Adding Custom Fields to a Log File for a Site  : https://docs.microsoft.com/en-us/iis/configuration/system.applicationhost/sites/site/logfile/customfields/add#sample-code

如何在部署云服务Cloud Service时候通过启动任务Start Task来配置IIS (如开启ARR) : https://www.cnblogs.com/lulight/p/13579629.html

当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!

分类: 【Azure 云服务】

标签: 把HTTP Request Header中的User-Agent字段增加到IIS输出日志中Web Role(IIS Host)增加自定义字段Cloud ServiceAzure Developer

Clone this wiki locally