Django – 日志

在django中对日志记录提供了很好的支持,日志文件在开发环境中以及在线上环境或者在测试环境中都可以很好的反应程序的执行情况,以及出现bug的时候,准确的定位bug的位置,请求方法,错误原因等。所以说日志对于程序猿来说是一个开发者必备的必须了解且精通的东西。

日志logging模块

logging模块可以收集记录错误,警告等调试信息,在程序中可以捕获这些信息,并且甚至可以将错误的重要信息等都可以通过邮件发送给开发者

logging的组成

1
2
3
4
5
6
7
Loggers

Handlers

Filters

Formatters

Loggers

Logger 为日志系统的入口。每个logger 是一个具名的容器,可以向它写入需要处理的消息。

每个logger 都有一个日志级别。日志级别表示该logger 将要处理的消息的严重性。

Python 定义以下几种日志级别:

1
2
3
4
5
6
7
8
9
DEBUG:用于调试目的的底层系统信息

INFO:普通的系统信息

WARNING:表示出现一个较小的问题。

ERROR:表示出现一个较大的问题。

CRITICAL:表示出现一个致命的问题。

日志级别等级CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET

Handlers

Handler 决定如何处理logger 中的每条消息。它表示一个特定的日志行为。

与logger 一样,handler 也有一个日志级别。如果消息的日志级别小于handler 的级别,handler 将忽略该消息。

Logger 可以有多个handler,而每个handler 可以有不同的日志级别。

Filters

Filter 用于对从logger 传递给handler 的日志记录进行额外的控制。

Formatters

日志记录需要转换成文本。

Formatter 表示文本的格式。Fomatter 通常由包含日志记录属性的Python 格式字符串组成;

你也可以编写自定义的fomatter 来实现自己的格式。

如下展示了formatters格式:

django_logging_model

配置logging模块

在settings.py文件中配置

创建日志所在目录

django_log_path
django_log_path

定义LOGGING的格式

django_logging_format
django_logging_format

定义handler的格式

django_logging_handler
django_logging_handler

定义loggers的格式

django_logging_logger
django_logging_logger

注意:loggers的level的级别一定要大于handlers的级别,否则handlers会忽略掉该信息的。

使用logging打印日志

django_logger_using
django_logger_using

查看log文件中日志打印的记录

django_logging_log
django_logging_log