问题描述
我正在遵循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仍将进入控制台。
解决方法
这是错误的部分:
"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>