Django用的是Python buildin的logging模块。

Python logging由四部分组成:

  1. Loggers - 记录器
  2. Handles - 处理器
  3. Filters - 过滤器
  4. Formatters - 格式器

Loggers

Logger,记录器。一个记录器是日志系统的一个实体,每一个记录器是一个已经命名好的信息“桶”,在程序执行的过程中,可以往里面写入信息。

每个记录器都要设置log level, 这个log level描述了记录器记录信息的严重级别。log level有如下几种:

1、DEBUG: 低级别的系统信息,一般用于调试

2、INFO: 一般的系统信息

3、WARNING: 警告信息,

4、ERROR: 错误信息,

5、CRITICAL: 严重性信息

每一条被写入到记录器中的信息都称为一条日志记录。每条日志记录也都有log level来说明该日志记录的严重级别。每条日志记录也包含一些有用的元素,这些元素用来描述这个日志记录描述的一个什么样的事件。

当一条日志信息发给记录器时,日志信息的log level会和记录器的log level对比。如果日志信息的log level达到或者是超过记录器的log level的级别,这条信息会被发往处理器去处理。否则,这条信息会被忽略。

一旦记录器决定信息要进一步被处理,这条信息会被pass给Handler.

Handlers

handlers,处理器。就像一个引擎,决定每一条写进记录器中的信息应该怎么处理。它说明的是一个特殊的记录行为,比如,将这个信息写在屏幕上、写到一个文件或者写到一个Network socket中去。

像记录器一样,handlers 也有log level控制。如果信息的log level没有达到或者超过handler的log level,那么handler会忽略点这条消息。

一个logger可以有多个handlers, 且每个handler可以有不同的log level. 这样,可以根据信息的严重级别提供不同的通知。比如,你可以设置另一个严重级别为ERROE和CRITICAL的handler, 为一个paging service。同时,设置一个handler去记录下所有严重级别的信息,以提供给进一步分析。

Filters

Filters,过滤器。提供一些额外的过滤功能,作用于信息从记录器传给handler的过程中。

默认情况下,任何达到log level的日志信息都会被处理。但是,如果配置了filter,你可以在logging过程中添加一些额外的过滤功能。比如,你只允许某个指定的来源的ERROR信息发给handler.

Filters也可以修改日志记录的级别。比如,你可以写一个Filter, 设置在一些特殊情况,能够将ERROR级别的日志记录降级为WARNING级别。

Filters可以在Loggers和handlers里面设置。多个filters可以同时作用于一个地方,起到多重过滤的作用。

Formatters

Formatters,格式化器。一条日志记录需要以文本的形式展现出来,Formatters定义了文本的格式。一个格式化器一般由python的格式字符串组成。不过,你也可以自定义格式。

Django logging的介绍的更多相关文章

  1. python 全栈开发,Day96(Django REST framework 视图,django logging配置,django-debug-toolbar使用指南)

    昨日内容回顾 1. Serializer(序列化) 1. ORM对应的query_set和ORM对象转换成JSON格式的数据 1. 在序列化类中定义自定义的字段:SerializerMethodFie ...

  2. python3-开发进阶Django-debug-toolbar的配置和Django logging的配置

    阅读目录 django-debug-toolbar的配置 Django logging的配置 一.django-debug-toolbar的配置 1.介绍 django-debug-toolbar 是 ...

  3. 6月20日 Django中ORM介绍和字段、字段参数、相关操作

    一.Django中ORM介绍和字段及字段参数 二.Django ORM 常用字段和参数 三.Django ORM执行原生SQL.在Python脚本中调用Django环境.Django终端打印SQL语句 ...

  4. Django - Django框架 简单介绍

    Django框架 简单介绍 本文地址: http://blog.csdn.net/caroline_wendy/article/details/29172271 1. 介绍 Django是一个开放源码 ...

  5. Django项目结构介绍

    官网下载网址:https://www.djangoproject.com/download/ 安装(安装最新LTS版): pip3 install django==2.0.7 创建一个django项目 ...

  6. ModelViewSet 路由 / django logging配置 / django-debug-toolbar使用

    一.ModelViewSet 路由 因为我们正在使用ViewSet代替View,实际上已经不再需要自己来设计URL的配置了.将资源和视图.URL绑定到一起是一个可以自动完成的过程,只需要使用Route ...

  7. Django中ORM介绍和字段及字段参数 Object Relational Mapping(ORM)

    Django中ORM介绍和字段及字段参数   Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简 ...

  8. python 日志打印之logging使用介绍

    python 日志打印之logging使用介绍 by:授客QQ:1033553122 测试环境: Python版本:Python 2.7   简单的将日志打印到屏幕 import logging lo ...

  9. Django logging模块

    一.Django logging配置 1.在setting.py中配置 # 日志文件存放路径 BASE_LOG_DIR = os.path.join(BASE_DIR, "log" ...

随机推荐

  1. [转]象棋AI算法(一)

    本文转自:http://blog.csdn.net/u012723995/article/details/47133693 参考文献:http://www.xqbase.com/computer/se ...

  2. 企业为什么需要实施BPM?

    背景:众所周知,近几年企业信息化发展迅速,业务管理系统从大到小,数量众多,如ERP,SCM,PLM,CRM,EHR,OA,BI…… 等,企业的管理人员进行管理的主要手段是通过各个业务系统获得各种管理报 ...

  3. PHP学习9——MySQL数据库

    主要内容: MySQL的启动 MySQL数据库操作 数据库表设计 创建和查看表 修改表结构 MySQL语句操作 数据库备份与恢复 PHP操作MySQL数据库 面向对象的数据库操作 MySQL数据库是目 ...

  4. Java类加载器ClassLoader总结

    JAVA类装载方式,有两种: 1.隐式装载, 程序在运行过程中当碰到通过new 等方式生成对象时,隐式调用类装载器加载对应的类到jvm中. 2.显式装载, 通过class.forname()等方法,显 ...

  5. Java面试题之HashMap阿里面试必问知识点,你会吗?

    面试官Q1:你用过HashMap,你能跟我说说它的数据结构吗? HashMap作为一种容器类型,无论你是否了解过其内部的实现原理,它的大名已经频频出现在各种互联网Java面试题中了.从基本的使用角度来 ...

  6. 简单工厂模式的C++、Java实现

    1.简单工厂模式UML UML如下: 图1. 简单工厂模式UML 2.C++实现 类视图如下: 图2. C++实现简单工厂模式类视图 其中,SimpleFactory实现为: Product * Si ...

  7. JS加法相关

    1:首先JS是一种弱语言,但是同类型可以自己相加减 例如“a”+”b” 可以自动组成ab : 1+ 2 自动变成3 var data = 2; var currentPage = data; //2 ...

  8. 一道google的面试题(据说)

    1. 原题(同事给的) Max Howell 参加了谷歌的面试,出题人竟然要求 Max Howell 在白板上作出解答,Max Howell 当然愤怒地拒绝了,回家以后马上在微博上跟我们分享他的吐槽: ...

  9. VC编程操作word2010生成表格

    作者:朱金灿 来源:http://blog.csdn.net/clever101 一.   右键单击工程节点,然后选择添加类,如下图: 二.   添加TypeLib中的MFC类,如下图: 三.   选 ...

  10. .NET开源工作流RoadFlow-Bug修改-1.8.2子流程接收者始终为发送者

    1.8.2及以前版本中子流程待办任务的处理者始终为上一步骤发送者BUG的处理: 修改类:RoadFlow.Platform.WorkFlowTask中如下图红框中的内容即可: