django logging 只记录 ERROR 部分, DEBUG 和 INFO 不记录

2015-08-26 18:15:09 +08:00
 shiziwen

在使用 django 的 logging 的时候,配置之后,测试发现,只有调用 ERROR 的时候,信息才会被写到文件, DEBUG 和 INFO 部分没有被记录,请问大家有没有遇到过类似的情况,多谢。

LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    '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': {
        'console': {
            'level': 'DEBUG',
            'filters': ['require_debug_true'],
            'class': 'logging.StreamHandler',
            'formatter': 'simple'
        },
        'development_logfile': {
            'level': 'DEBUG',
            'filters': ['require_debug_true'],
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': '/data/log/django/dyd/django_dev.log',
            'maxBytes': 1024 * 1024 * 5, # 5 MB
            'backupCount': 7,
            'formatter': 'verbose'
        },
        'production_logfile': {
            'level': 'ERROR',
            'filters': ['require_debug_false'],
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': '/data/log/django/dyd/django_production.log',
            'maxBytes': 1024 * 1024 * 5, # 5 MB
            'backupCount': 7,
            'formatter': 'simple'
        },
        'dba_logfile': {
            'level': 'DEBUG',
            'filters': ['require_debug_false','require_debug_true'],
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': '/data/log/django/dyd/django_dba.log',
            'maxBytes': 1024 * 1024 * 5, # 5 MB
            'backupCount': 7,
            'formatter': 'simple'
        },
    },
    'loggers': {
        'dyd': {
            'handlers': ['development_logfile','production_logfile'],
         },
        'invitesport': {
            'handlers': ['development_logfile','production_logfile'],
         },
        'dba': {
            'handlers': ['console','dba_logfile'],
        },
        'django': {
            'handlers': ['console','development_logfile','production_logfile'],
        },
        'py.warnings': {
            'handlers': ['console','development_logfile'],
        },
    }
}

测试代码:

>>> import logging
>>> logg=logging.getLogger ('dyd')
>>> logg.info ('adsfasdf')
>>> logg.error ('adsfasdf')

文件内容:

[2015-08-26 18:13:43] ERROR [dyd.<module>:1] adsfasdf
3376 次点击
所在节点    Django
2 条回复
julyclyde
2015-08-27 14:34:14 +08:00
'filters': ['require_debug_false','require_debug_true'], 这俩是不是语义冲突啊?

另外这是 python 的 logging 吧,不是 django 的。 django 并没有额外的 logging 机制
shiziwen
2015-08-30 16:33:38 +08:00
@julyclyde
django 用的就是 Python 的 log 机制。
多谢。
之前我只调用了 dyd 的 logger 。
目前的解决方法是在 logger 中,加上 level 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/216191

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX