使用 OpenCensus 将 Django 日志导出到 Azure AppInsights

Export Django logs to Azure AppInsights with OpenCensus

我正在遵循 Django and Azure 的指导。我能够得到依赖项和请求,但不能得到痕迹。

我将这个添加到中间件中:

'opencensus.ext.django.middleware.OpencensusMiddleware'

这是 settings.py

的 LOGGING 和 OPENCENSUS 部分
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
    'default': {
        'format': '%(asctime)s - %(levelname)s - %(processName)s - %(name)s\n%(message)s',
    },
},
"handlers": {
    "azure": {
        "level": "DEBUG",
    "class": "opencensus.ext.azure.log_exporter.AzureLogHandler",
        "instrumentation_key": assert_env('APPINSIGHTS_INSTRUMENTATIONKEY'),
     },
    "console": {
        "level": "DEBUG",
        "class": "logging.StreamHandler",
        "formatter": "default",
     },
  },
"loggers": {
    "logger_name": {"handlers": ["azure", "console"]},
},
    # For some reason, this is needed or logging doesn't show up in the
    # celery log file.
'skyforge.tasks': {
    'handlers': ['azure','console'],
    'level': assert_env('DJANGO_LOG_LEVEL'),
},

}

OPENCENSUS = {
    'TRACE': {
        'SAMPLER': 'opencensus.trace.samplers.ProbabilitySampler(rate=1)',
        'EXPORTER': '''opencensus.ext.azure.trace_exporter.AzureExporter(
            service_name='skyforge'
        )'''
        #Assumes Environmental Variable 'APPINSIGHTS_INSTRUMENTATIONKEY'
    }
}

任何关于在哪里寻找为什么没有跟踪日志的指南。 django-critical 和 django-tasks 仍在控制台中。

这是错误的部分:

"loggers": {
"logger_name": {"handlers": ["azure", "console"]},

"logger_name" 需要填写 App 名称,以便 logger = logging.getLogger(__name__) 工作正常。

记录器中还需要一个级别。

这是对我有用的方法。

LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
    'default': {
        'format': '%(asctime)s - %(levelname)s - %(processName)s - %(name)s\n%(message)s',
    },
},
'handlers': {
     'azure': {
        'class': 'opencensus.ext.azure.log_exporter.AzureLogHandler',
        'formatter':'default'
        # https://pypi.org/project/opencensus-ext-azure/
        #Assumed ENV APPLICATIONINSIGHTS_CONNECTION_STRING
      },
    'console': {
        'class': 'logging.StreamHandler',
        'formatter': 'default',

    },
  },
'loggers': {
    'polls': {
        'handlers': ['azure', 'console'],
        'level':'DEBUG'
        },
}

}

以下选项没有影响: 'level' 处理程序中的参数 'filter':'[]' 在处理程序中 'stream':sys.stdout 在处理程序中。

我将 Appinsights 连接字符串放在环境变量中,但参考资料也显示了如何放置在设置中。设置中的原始密钥似乎也有效。

APPLICATIONINSIGHTS_CONNECTION_STRING=InstrumentaionKey=<key uuid>