0

我正在遵循DjangoAzure的本指南。我能够获得依赖项和请求,但不能获得跟踪。

我将此添加到中间件:

'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 仍在控制台中。

4

1 回答 1

0

这是错误的部分:

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

"logger_name"需要使用应用程序名称填充,以便 正常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>
于 2020-11-12T20:53:51.757 回答