【python】django中日志模块使用

一、需求来源:

在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文件中打印了内容。


参考资料:

推荐阅读更多精彩内容