首页 > 解决方案 > Django - 我如何确定 django 正在记录什么模块?

问题描述

我想为所有 django 模块添加一个全局自定义格式化程序,以便我可以使用 Elasticsearch 摄取一致的日志文件。我如何弄清楚哪些 django 模块正在记录什么,以便我可以更改它们的所有格式化程序?

在此处输入图像描述

这是我的日志配置settings.py。使用 django 2.0。

# NOTE: Copied from DEFAULT_LOGGING and added custom format
# from django.utils.log import DEFAULT_LOGGING

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'filters': {
        'require_debug_false': {'()': 'django.utils.log.RequireDebugFalse'},
        'require_debug_true': {'()': 'django.utils.log.RequireDebugTrue'}},
    'formatters': {
        'django.server': {
            '()': 'django.utils.log.ServerFormatter',
            'format': '[%(asctime)s] %(levelname)s [%(name)s.%(funcName)s:%(lineno)d] %(module)s %(message)s',
            'datefmt': '%Y-%m-%d %H:%M:%S'}},
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
            'filters': ['require_debug_true'],
            'level': 'INFO'},
        'django.server': {
            'class': 'logging.StreamHandler',
            'formatter': 'django.server',
            'level': 'INFO'},
        'mail_admins': {
            'class': 'django.utils.log.AdminEmailHandler',
            'filters': ['require_debug_false'],
            'level': 'ERROR'}},
    'loggers': {
        'api': {
            'handlers': ['django.server'],
            'level': 'INFO',
            'propagate': False},
        'django': {
            'handlers': ['django.server', 'mail_admins'],
            'level': 'INFO'},
        'django.server': {
            'handlers': ['django.server'],
            'level': 'INFO',
            'propagate': False}},
}

标签: djangodjango-logging

解决方案


在格式化字符串中添加您的唯一标签,然后在您的 ELK 中搜索此关键字。

喜欢 :

%(asctime)s] %(levelname)s [%(name)s.%(funcName)s:%(lineno)d] MYMODULE [%(module)s ] %(message)s'

在上述情况下,我将在日志中搜索 MYMODULE 标签。


推荐阅读