V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
shiziwen
V2EX  ›  Django

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

  •  
  •   shiziwen · 2015-08-26 18:15:09 +08:00 · 3374 次点击
    这是一个创建于 3402 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在使用 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
    
    2 条回复    2015-08-30 16:33:38 +08:00
    julyclyde
        1
    julyclyde  
       2015-08-27 14:34:14 +08:00
    'filters': ['require_debug_false','require_debug_true'], 这俩是不是语义冲突啊?

    另外这是 python 的 logging 吧,不是 django 的。 django 并没有额外的 logging 机制
    shiziwen
        2
    shiziwen  
    OP
       2015-08-30 16:33:38 +08:00
    @julyclyde
    django 用的就是 Python 的 log 机制。
    多谢。
    之前我只调用了 dyd 的 logger 。
    目前的解决方法是在 logger 中,加上 level 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1051 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:40 · PVG 06:40 · LAX 14:40 · JFK 17:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.