使用 OpenCensus 将 Django 日志导出到 Azure AppInsights
Posted
技术标签:
【中文标题】使用 OpenCensus 将 Django 日志导出到 Azure AppInsights【英文标题】:Export Django logs to Azure AppInsights with OpenCensus 【发布时间】:2021-01-27 19:55:19 【问题描述】:我正在遵循 Django 和 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 仍在控制台中。
【问题讨论】:
【参考方案1】:这是错误的部分:
"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>
【讨论】:
以上是关于使用 OpenCensus 将 Django 日志导出到 Azure AppInsights的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 OpenCensus 检测 Prometheus Gauge?
Stackdriver 上未显示自定义 OpenCensus 指标
ClassNotFoundException: io.opencensus.trace.propagation.TextFormat 未找到