使用 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>
我正在遵循 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>