【Django基础教程】logging配置详解

Django logging 详解

Django使用logging来做日志记录,django中的settings.py支持logging配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
BASE_LOG_DIR = os.path.join(BASE_DIR, "log")
LOGGING = {
'version': 1, # 保留字
'disable_existing_loggers': False, # 禁用已经存在的logger实例
# 日志文件的格式
'formatters': {
# 详细的日志格式
'standard': {
'format': '[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]'
'[%(levelname)s][%(message)s]'
},
# 简单的日志格式
'simple': {
'format': '[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s'
}
},
# 过滤器
'filters': {
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue',
},
},
# 处理器
'handlers': {
# 在终端打印
'console': {
'level': 'DEBUG',
'filters': ['require_debug_true'], # 只有在Django debug为True时才在屏幕打印日志
'class': 'logging.StreamHandler', #
'formatter': 'simple'
},
# 默认的
'default': {
'level': 'INFO',
'class': 'logging.handlers.RotatingFileHandler', # 保存到文件,自动切
'filename': os.path.join(BASE_LOG_DIR, "info.log"), # 日志文件
'maxBytes': 1024 * 1024 * 500, # 日志大小 50M
'backupCount': 10, # 最多备份几个
'formatter': 'standard',
'encoding': 'utf-8',
}
},
'loggers': {
# 默认的logger应用如下配置
'': {
'handlers': ['default', 'console'], # 上线之后可以把'console'移除
'level': 'DEBUG',
'propagate': True, # 向不向更高级别的logger传递
},
'interview.views': {
'handlers': ['default', 'console'], # 上线之后可以把'console'移除
'level': 'DEBUG',
'propagate': True, # 向不向更高级别的logger传递
}
},
}

这是一个比较完整的logging配置,在Django根目录下生成 log 目录,日志在log目录下,其中:

  • formatters 定义了打印日志的格式
  • handlers 定义处理日志的方式,比如 default 默认方式,console 就是打印到控制台方式
  • loggers 定义了我们最终使用哪种handlers来处理日志
1
2
3
import logging

logger = logging.getLogger('interview.views')

使用了 ‘interview.views’ 这个loggers

坚持原创技术分享,谢谢鼓励我继续创作!