Azure Web Apps上Flask应用Python logging日志无法同步Application Insights需如何配置
Python Flask应用logging日志接入Azure Application Insights配置方案
1 Application Insights关联配置(Azure门户侧操作)
- 进入部署应用的Azure Web App控制台,找到左侧菜单「设置 > 应用程序见解」,确认已开启Application Insights集成,且绑定了目标日志存储的Application Insights实例
- 进入Web App的「配置 > 环境变量」页,新增如下两个环境变量:
APPLICATIONINSIGHTS_ENABLE_AGENT: true:开启Application Insights代理自动采集能力APPLICATIONINSIGHTS_LOGGING_LEVEL: INFO:配置日志采集最低级别,可根据需求调整为DEBUG/WARNING/ERROR,必须与代码中logging设置的输出级别匹配
- 保存配置后重启Web App实例,确保环境变量生效
2 应用代码侧适配配置
默认Python标准logging模块的日志只会输出到本地stdout/stderr或本地文件,需要绑定Application Insights专用的日志处理器才能完成上报,配置示例如下:
依赖安装
在项目的requirements.txt中添加如下依赖:
opencensus-ext-azure
部署时会自动安装,本地测试可手动执行pip install opencensus-ext-azure安装。
代码配置示例
import logging from opencensus.ext.azure.log_exporter import AzureLogHandler from flask import Flask app = Flask(__name__) # 初始化logging配置 logger = logging.getLogger(__name__) # 日志输出级别需和门户配置的采集级别匹配 logger.setLevel(logging.INFO) # 自动读取Web App环境中注入的Application Insights连接字符串,无需手动填写 logger.addHandler(AzureLogHandler()) # 接口测试示例 @app.route('/test') def test_log(): # 该日志会被上报到Application Insights logger.info("logging模块测试日志") return "测试完成" if __name__ == '__main__': app.run()
3 日志验证
日志上报存在1-5分钟的延迟,配置完成后等待数分钟,进入Application Insights控制台的「日志」查询面板,执行如下语句查询上报的日志:
traces | where message contains "测试日志" | order by timestamp desc
如果查询不到,先检查代码中logging设置的输出级别是否低于门户配置的采集级别,低级别日志会被自动过滤。
内容的提问来源于stack exchange,提问作者Coder
相关产品推荐
相关产品推荐

