You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Django LOGGING对接Azure Log Analytics?解决模块缺失报错

Django应用集成Azure Log Analytics日志方案

错误原因

你配置的azure.loganalytics.handlers.LogAnalyticsHandler模块不存在,一是因为未安装对应依赖包,二是当前Azure已推荐使用OpenTelemetry替代旧的日志处理方式,旧包路径已发生变更。

解决方案一:使用OpenTelemetry集成(官方推荐)

这是Azure当前主推的日志收集方案,替代旧版Application Insights及单独的Log Analytics handler,兼容性和后续维护更有保障。

  1. 安装依赖包
pip install opentelemetry-distro opentelemetry-instrumentation-django azure-monitor-opentelemetry-exporter
  1. 配置Django项目
    在项目的settings.py中添加以下配置:
import os
from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from azure.monitor.opentelemetry.exporter import AzureMonitorTraceExporter
from opentelemetry.instrumentation.django import DjangoInstrumentor

# 初始化OpenTelemetry追踪器
trace.set_tracer_provider(TracerProvider())

# 配置Azure Monitor导出器,使用连接字符串认证
exporter = AzureMonitorTraceExporter(
    connection_string=os.environ.get("AZURE_MONITOR_CONNECTION_STRING")
)

trace.get_tracer_provider().add_span_processor(
    BatchSpanProcessor(exporter)
)

# 启用Django应用的OpenTelemetry instrumentation
DjangoInstrumentor().instrument()

# 日志配置:将指定日志转发到OpenTelemetry
LOGGING = {
    "version": 1,
    "disable_existing_loggers": False,
    "handlers": {
        "otel": {
            "class": "opentelemetry.sdk._logs.LoggingHandler",
        },
    },
    "loggers": {
        "API": {
            "handlers": ["otel"],
            "level": "INFO",
            "propagate": False,
        },
    },
}
  1. 设置环境变量
    从Azure门户的Log Analytics工作区或Azure Monitor资源中获取连接字符串,设置为环境变量:
export AZURE_MONITOR_CONNECTION_STRING="你的Azure Monitor连接字符串"

解决方案二:使用传统Log Analytics Handler(旧方式)

如果坚持使用传统日志handler模式,需修正依赖包和类路径:

  1. 安装依赖包
pip install azure-loganalytics
  1. 修正日志配置
    注意正确的类路径为azure.loganalytics.LogAnalyticsHandler,同时补充日志类型参数:
LOGGING = {
    "version": 1,
    "disable_existing_loggers": False,

    "handlers": {
        'azure_log_analytics': {
            'level': 'DEBUG',
            'class': 'azure.loganalytics.LogAnalyticsHandler',
            'workspace_id': os.environ.get('LOG_ANALYTICS_WORKSPACE_ID', None),
            'workspace_key': os.environ.get('LOG_ANALYTICS_WORKSPACE_KEY', None),
            'log_type': 'DjangoAPILogs',  # 自定义日志类型,方便在Log Analytics中筛选
        },
    },

    "loggers": {
        "API": {
            "handlers": ["azure_log_analytics"],
            "level": "INFO",
            "propagate": False,
        },
    }
}

验证配置

启动Django应用后,触发API接口生成日志(比如在视图中添加logger.info("测试日志内容")),登录Azure门户的Log Analytics工作区,用以下Kusto查询语句查看日志:

DjangoAPILogs
| where TimeGenerated > ago(1h)
| order by TimeGenerated desc

内容的提问来源于stack exchange,提问作者Ádám Molnár

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 14:21:18