美文网首页Django学习
Django 项目的日志系统

Django 项目的日志系统

作者: 拉纸没带屎 | 来源:发表于2015-09-20 19:03 被阅读3263次

前言

一个 Web 项目,无论是在开发调试的时候,还是上线为用户提供服务以后,都需要保留下一些运行当中必要的信息用于日后的维护和故障的定位。Django 中使用 Python 内建的 logging 模块做日志的收集。

Django 中日志系统配置

logging 模块配置

logging 模块为用户提供了用于配置它的 api(接口函数)- logging.config.dictConfig(config)。这里需要传递一个config 参数(日志配置参数字典)。config 通过 DictConfigurator 类进行解析,其构造方法使用了 config,同时还有一个 configure() 方法。dictConfig() 方法内部调用 dictConfigClass 初始化一个 DictConfigurator 实例并调用 configure() 方法。

def dictConfig(config): 
    dictConfigClass(config).configure()

如果在 DJANGO 使用的话第一步需要在项目 setting.py 文件中定义这个上面说到的 config(日志配置字典),包括记录器(loggers)、处理器(handlers)、日志格式(formatters)、过滤器(filters)。

File:project/setting.py
LOGGING = {
    'version': 1, # 标示配置模板版本,int 类型,目前只接收 `1`这个值。
    'disable_existing_loggers': False, # 这个没太看明白什么意思,了解的朋友麻烦说明下
    'formatters': {
        'standard': {
             'format': '%(levelname)s %(asctime)s %(message)s',
        },
    },
    'filters': {
        # 这里是定义过滤器,需要注意的是,由于 'filters' 是 logging.config.dictConfig 方法要求在配置字典中必须给订的 key ,所以即使不使用过滤器也需要明确给出一个空的结构。
    },
    'handlers': {
         'mail_admins': {
            'level': 'ERROR',
            'class': 'django.utils.log.AdminEmailHandler',
            'formatter':'standard',
        },
        'tofile': {
            'level': 'ERROR',
            'class': 'logging.FileHandler',
            'formatter':'standard',
            'filename': 'project/app/log/view.log',
        },
    },
    'loggers': {
        'project.app': {
            'handlers': ['tofile'],
            'level': 'DEBUG',
            'propagate': True,
        },
    }
}

下一步需要在需要记录日志的地方创建 logger 实例。

File:project/app/views.py
import logging

logger = logging.getLogger(__name__) # 这里使用 __name__ 动态搜索定义的 logger 配置,这里有一个层次关系的知识点。

def log_test(request):
    logger.error("level error test")
    logger.info("level info test")

运行上面代码 "level error test" 会被写入 project/app/log/view.log,因为 logger 对象会根据层次搜索使用 setting.py 设置中的 project.app 记录器配置。由于 project.app 记录器配置绑定了 tofile 处理器,所以只会写入 error 以上的日志记录。

总结

到此是一个 Django 中使用日志 logging 模块的大致方法,细节还需要阅读官方文档,可能有不对的地方,日后慢慢更正。

相关文章

  • Django 项目的日志系统

    前言 一个 Web 项目,无论是在开发调试的时候,还是上线为用户提供服务以后,都需要保留下一些运行当中必要的信息用...

  • Django中的日志系统章

    Python日志系统 Django使用logging模块记录日志。Python的日志系统分为4块。分别是:logg...

  • django中日志模块使用

    一、需求来源: 在django搭建的环境中,代码运行输出的日志需要相关模块做管理。 二、配置日志系统: Djang...

  • django 多进程下,日志写入错乱问题

    问题:使用django自带logging配置记录日志时发现,日志丢失与日志写入错乱 原因:django loggi...

  • 在django下使用mysql(1)

    1、使用终端命令启动mysql 2、在MySql中创建Django项目的数据库 3、在MySql中为Django项...

  • django的日志系统

    摘要 日志在程序开发中是少不了的,通过日志我们可分析到错误在什么地方,有什么异常。在生产环境下有很大的用途。dja...

  • 教你用Log4j2和SLF4j打造完整的日志系统

    一:前言 近期做一个项目打造项目的日志系统时,发现没有一个系统的学习,故准备系统学习一下日志系统,后续会有关于日志...

  • Django日志处理

    日志处理 日志级别 DEBUG:用于调试目的的低级系统信息 INFO:一般系统信息 WARNING:描述发生的小问...

  • LAMP之rsyslog+loganalyzer系统日志集中管理

    作为运维人员,熟悉系统日志是一项基本功。本文将介绍centos6的系统日志rsyslog及loganalyzer工...

  • Django : django-extensions

    django-extensions$ pip install django-extensions 在Django项...

网友评论

    本文标题:Django 项目的日志系统

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