前言
django框架的日志通过python
内置的logging
模块实现的,既可以记录自定义的一些信息描述,也可以记录系统运行中的一些对象数据,还可以记录包括堆栈跟踪、错误代码之类的详细信息。
logging主要由4部分组成:Loggers
、Handlers
、Filters
和Formatters
settings中完整的配置
如果想自定义配置日志信息,我们可以在settings.py
文件中配置,那配置的格式是怎么样的呢?我们可以通过from django.utils.log import DEFAULT_LOGGING
查看Django中默认的日志配置信息,然后依葫芦画瓢即可
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'incremental':True,
'filters': {},
'formatters': {},
'handlers': {},
'loggers': {}
}
上述是默认的日志配置信息的格式,我们依次介绍
- version:配置信息的版本
- disable_existing_loggers:默认为
True
,True:设置已存在的logger
失效。False:让已存在的logger
不失效,保证日志信息完整。一般情况下设置为False
- incremental:默认为
False
。True:是将配置解释为现有配置的增量。False:配置会覆盖已有默认配置。一般此项不用配置 - filter:过滤器
- formatters:格式器
- handlers:处理器
- loggers:日志器
Formatters
日志记录最终需要呈现为文本,formatter
程序描述该文本的确切格式。formatter
通常由包含LogRecord
属性的Python
格式化字符串组成 ; 但是,也可以编写自定义formatter
来实现特定的格式化行为。
1.settings中配置:
3个参数(具体看后面的Formatter
类):
- ():指定格式器的类,不指定的话,默认使用
logging.Formattr
。一般用默认即可 - format:格式化字符串
- style:样式选择
- datefmt:日期格式化字符串,使用的是
python
中时间日期格式化符号
案例
LOGGING = {
'formatters': {
'verbose': {
'()': 'logging.Formatter',
'format': '{levelname} {asctime} {module} {process:d} {thread:d} {message}',
'style': '{',
},
'simple': {
'format': '{levelname} {message}',
'style': '{',
},
}
}
配置了2个格式器:
- simple:只输出简单的:日志级别名称 日志消息
- verbose:输出:日志级别名称 生成日志消息的时间 模块 进程 线程 日志消息
2.内置格式器
Formatter:默认格式器,初始化参数:fmt=None, datefmt=None, style='%'
- fmt:格式化字符串,指定输出格式,如:
'{levelname}{process:d}{message}'
- datefmt:日期格式化字符串,为
None
则使用ISO8601
格式化,如:'2010-01-01 08:03:26,870'
- style:'%','{' 或 '$',3选一:
- '%':默认是这个,使用
python
的%
格式化 , 如:%(levelname)s
- '{':使用
str.format
格式化(django框架使用这个), 如:{levelname}
- '$':使用类
string.Template
格式化,如:\$levelname
- '%':默认是这个,使用
格式化字符串的种类
%(name)s:记录器logger的名称
%(levelno)s:日志级别对应的数字