V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
shiziwen
V2EX  ›  Django

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

  •  
  •   shiziwen · Aug 26, 2015 · 3893 views
    This topic created in 3900 days ago, the information mentioned may be changed or developed.

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

    另外这是 python 的 logging 吧,不是 django 的。 django 并没有额外的 logging 机制
    shiziwen
        2
    shiziwen  
    OP
       Aug 30, 2015
    @julyclyde
    django 用的就是 Python 的 log 机制。
    多谢。
    之前我只调用了 dyd 的 logger 。
    目前的解决方法是在 logger 中,加上 level 。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   864 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 22:20 · PVG 06:20 · LAX 15:20 · JFK 18:20
    ♥ Do have faith in what you're doing.