1

我正在尝试使用 OpenCensus 将我的 django 项目日志连接到 Azure Application Insights。montirong 请求的中间件运行良好,但我还想将遥测日志(不仅仅是请求)发送到 Azure。这是我的 django 日志配置:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {
            'format': '%(asctime)s %(levelname).3s %(process)d %(name)s : %(message)s',
        },
        'simple': {
            'format': '%(asctime)s %(levelname)-7s : %(message)s',
        },
    },
    'filters': {
        'require_debug_false': {
            '()': 'django.utils.log.RequireDebugFalse',
        }
    },
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
            'formatter': 'verbose',
        },
        'azure': {
            'formatter': 'simple',
            'class': 'opencensus.ext.azure.log_exporter.AzureLogHandler',
            'connection_string': 'InstrumentationKey=XXXX-XXXX-XXXX-XXXX'
        },
        'mail_admins': {
            'level': 'ERROR',
            'filters': ['require_debug_false'],
            'class': 'django.utils.log.AdminEmailHandler'
        }
    },
    'loggers': {
        '': {
            'level': os.environ.get('LOGLEVEL', 'INFO'),
            'handlers': ['console', 'azure'],
        },
        'devdebug': {
            'handlers': ['console'],
            'level': 'INFO',
            'propagate': False,
        },
        'django': {
            'handlers': ['console', 'mail_admins'],
            'level': os.environ.get('LOGLEVEL', 'INFO'),
            'propagate': False,
        }
    },
}

'azure'在我的根记录器配置中没有处理程序,一切正常。使用'azure'处理程序,服务器启动但不工作:我无法连接到它。我真的不知道发生了什么,因为它没有显示不寻常的日志(即使使用 LOGLEVEL=DEBUG)。我的处理程序配置应该很好,因为我可以在 Azure 中接收日志(当我运行任何管理命令时)。即使我运行manage runsslserver localhost:53215,我也会收到日志,但是当我尝试访问它时,就像我的服务器没有运行一样。

4

1 回答 1

0

我已经通过设置设置了日志记录并让它工作(虽然没有使用runsslserver。我已经将connection_string设置为环境变量。

我遇到的问题是“django”记录器在生产中不起作用。所有其他记录器都在发送消息,但不是那个???我有一个经典案例,它适用于我的机器和我们的开发服务器,但不适用于生产... FML!

INTEGRATIONS = ['postgresql', 'httplib','logging', 'threading']
config_integration.trace_integrations(INTEGRATIONS)

# Set the AppInsights Key as an env variable so it can be used by the logging system
os.environ['APPLICATIONINSIGHTS_CONNECTION_STRING'] = 'InstrumentationKey=XXXXXXXXXXXXXXXXXXXXXXX'

LOGGING = {
    'disable_existing_loggers': True, #False, #<-- if true then make sure that you have a 'django' and '' logger
    'filters': {
        "require_debug_false": {
            '()': 'django.utils.log.RequireDebugFalse',
        },
        'require_debug_true': {
            '()': 'django.utils.log.RequireDebugTrue',
        },
    },
    'formatters': {
        'simple': {
            'format': '[%(asctime)s] %(levelname)s %(message)s',
        'datefmt': '%Y-%m-%d %H:%M:%S'
        },
        'verbose': {
            'format': '[%(asctime)s] %(levelname)s [%(name)s.%(funcName)s:%(lineno)d] %(message)s',
        'datefmt': '%Y-%m-%d %H:%M:%S'
        },
        'azure_verbose': {
            'format': '[%(asctime)s] %(levelname)s [%(name)s.%(funcName)s:%(lineno)d] %(message)s traceId=%(traceId)s spanId=%(spanId)s',
        'datefmt': '%Y-%m-%d %H:%M:%S'
        },
    },
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
            'level': 'INFO',
            'filters': ['require_debug_true'],
            'formatter': 'verbose'
        },
        'azure':{
            'level': 'INFO',
            'filters': ['require_debug_false'],
            'class': 'opencensus.ext.azure.log_exporter.AzureLogHandler',
            'formatter': 'azure_verbose'
        },
    }, 
    'loggers': {
        'mylogger': {
            "handlers": [
                "azure",
                "console",
                ],
        },
        'django': {
            'handlers': [
                'azure',
                'console',
                ],
        },
        'py.warnings': {
            'handlers': [
                'azure',
                'console',
                ],
        },
        '': {
            'handlers': [
                'azure',
                'console',
                ],
        },
    }, 
    'version': 1
}
于 2020-06-16T21:33:55.997 回答