【问题标题】:Django Logger not logging but all other loggers workDjango Logger 不记录但所有其他记录器工作
【发布时间】:2020-06-11 22:38:02
【问题描述】:

我已将我的 Django 应用程序配置为在生产中运行,但我无法从 django 记录器中获取任何内容。

根记录器正在写入文件和 Azure 日志记录,因此我可以看到我的 elasticsearch 和 opencensus 日志写入正常,但 django 没有任何输出。

目前我正在使用 INFO 级别来查看是否有任何内容出现,但一旦我知道事情正在写出来,我就会调整这些内容。

DEBUG = False
LOGGING = {
    "disable_existing_loggers": False, 
    "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'
        },
    },
    "handlers": {
        "file": {
            "class": "logging.FileHandler", 
            "filename": os.path.join(APP_ROOT, 'logs', 'app.log'),
            "level": "INFO",
            "formatter": 'verbose',
            'filters': ['require_debug_false'],
        },
        'console': { # writes to the 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': 'verbose'
        },
    },
    "loggers": {
        'django': {
            'handlers': [
                'azure',
                'file',
                ],
            'level': 'INFO',
        },
        '': {
            'handlers': [
                'azure',
                'file',
               ],
            'level': 'INFO',
        },
    }, 
    "version": 1
}

【问题讨论】:

    标签: python django logging


    【解决方案1】:

    所以,我发现答案是完全覆盖默认日志并从头开始构建它。

    在我无法理解的 django 路径中发生了一些事情。

    我强烈推荐这个网站,因为它更容易遵循描述 - https://www.webforefront.com/django/setupdjangologging.html

        LOGGING = {
        'disable_existing_loggers': True, #<-- if true then make sure that you have a django and py.warnings 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': { # writes to the console
                'class': 'logging.StreamHandler',
                'level': 'INFO',
                'filters': ['require_debug_true'],
                'formatter': 'verbose'
            },
            'azure':{ # exports to Azure Monitor. Needs OPENCENSUS elements configured
                'level': 'INFO',
                'filters': ['require_debug_false'],
                'class': 'opencensus.ext.azure.log_exporter.AzureLogHandler',
                'formatter': 'azure_verbose'
            },
        }, 
        'loggers': {
            'arches': {
                "handlers": [
                    "azure",
                    "console",
                    ],
            },
            'exporter': { # <-- exporter app logger
                "handlers": [
                    "azure",
                    "console",
                    ],
            },
            'django': { # <-- must have one django 
                'handlers': [
                    'azure',
                    'console',
                    ],
            },
            'py.warnings': { # <-- implement from default
                'handlers': [
                    'azure',
                    'console',
                    ],
            },
            '': { # <-- catchall
                'handlers': [
                    'azure',
                    'console',
                    ],
            },
        }, 
        'version': 1
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-03
      • 2018-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多