django中日志模块使用

作者: EldonZhao | 来源:发表于2017-03-01 21:51 被阅读1202次

    一、需求来源:

    在django搭建的环境中,代码运行输出的日志需要相关模块做管理。

    二、配置日志系统:

    Django使用dictConfig格式对日志配置进行相关配置,使用LOGGING定义一个字典对日志模块进行配置。主要涉及到一下配置项:

    LOGGING = {
        'version': 1,#日志版本
        'disable_existing_loggers': False,#True:disable原有日志相关配置
        'formatters': {#日志格式
            'verbose': {#详细格式
                'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
            },
            'simple': {#简单格式
                'format': '%(levelname)s %(message)s'
            },
        },
        'filters': {#日志过滤器
            'special': {#特殊过滤器,替换foo成bar,可以自己配置
                '()': 'project.logging.SpecialFilter',
                'foo': 'bar',
            },
            'require_debug_true': {#是否支持DEBUG级别日志过滤
                '()': 'django.utils.log.RequireDebugTrue',
            },
        },
        'handlers': {#日志handlers
            'file': {#文件handler
                'level': 'INFO',
                'class': 'logging.FileHandler',
                'filename': './controller.log'
            },
            'console': {#控制器handler,INFO级别以上的日志都要Simple格式输出到控制台
                'level': 'INFO',
                'filters': ['require_debug_true'],
                'class': 'logging.StreamHandler',
                'formatter': 'simple'
            },
            'mail_admins': {#邮件handler,ERROR级别以上的日志要特殊过滤后输出
                'level': 'ERROR',
                'class': 'django.utils.log.AdminEmailHandler',
                'filters': ['special']
            }
        },
        'loggers': {
            'django': {
                'handlers': ['console'],
                'propagate': True,
            },
            'django.request': {
                'handlers': ['mail_admins'],
                'level': 'ERROR',
                'propagate': False,
            },
            'myproject.custom': {
                'handlers': ['console', 'mail_admins', 'file'],
                'level': 'INFO',
                'filters': ['special']
            }
        }
    }
    

    三、打印日志:

    import logging
    logger = logging.getLogger(__name__)
    
    logger.error('Somthing goes wrong!')
    

    四、验证结果:

    修改myproject.custom为自己项目的名称即可,在根目录下看到controller.log文件中打印了内容。


    参考资料:

    相关文章

      网友评论

      本文标题:django中日志模块使用

      本文链接:https://www.haomeiwen.com/subject/asbcgttx.html