python中logging模块的字典形式应用

python中logging模块的字典形式应用

直接看代码:

 1 # -*- coding:utf-8 -*-
 2 import logging
 3 import logging.config
 4 import os
 5 
 6 path = os.path.abspath(__file__)
 7 BASE_DIR = os.path.dirname(os.path.dirname(path))
 8 
 9 debug_flag = True
10 
11 # 给过滤器使用的判断
12 class RequireDebugTrue(logging.Filter):
13     # 实现filter方法
14     def filter(self, record):
15         return debug_flag
16 
17 logging_config = {
18     #必选项,其值是一个整数值,表示配置格式的版本,当前唯一可用的值就是1
19     'version': 1,
20     # 是否禁用现有的记录器
21     'disable_existing_loggers': False,
22 
23     # 过滤器
24     'filters': {
25         'require_debug_true': {
26             '()': RequireDebugTrue,   #在开发环境,我设置DEBUG为True;在客户端,我设置DEBUG为False。从而控制是否需要使用某些处理器。
27         }
28     },
29 
30     #日志格式集合
31     'formatters': {
32         'simple': {
33             'format': '%(asctime)s - %(name)s - %(levelname)s - %(message)s',
34         },
35     },
36 
37     # 处理器集合
38     'handlers': {
39         # 输出到控制台
40         'console': {
41             'level': 'DEBUG',  # 输出信息的最低级别
42             'class': 'logging.StreamHandler',
43             'formatter': 'simple',  # 使用standard格式
44             'filters': ['require_debug_true', ],  # 仅当 DEBUG = True 该处理器才生效
45         },
46         # 输出到文件
47         'log': {
48             'level': 'DEBUG',
49             'class': 'logging.handlers.RotatingFileHandler',
50             'formatter': 'simple',
51             'filename': os.path.join(BASE_DIR, 'debug.log'),  # 输出位置
52             'maxBytes': 1024 * 1024 * 5,  # 文件大小 5M
53             'backupCount': 5,  # 备份份数
54             'encoding': 'utf8',  # 文件编码
55         },
56     },
57 
58     # 日志管理器集合
59     'loggers':{
60         'root': {
61             'handlers': ['console','log'],
62             'level': 'DEBUG',
63             'propagate': True,  # 是否传递给父记录器
64         },
65         'simple': {
66             'handlers': ['console','log'],
67             'level': 'WARN',
68             'propagate': True,  # 是否传递给父记录器,
69         }
70     }
71 }
72 
73 logging.config.dictConfig(logging_config)
74 logger = logging.getLogger('root')
75 
76 # 尝试写入不同消息级别的日志信息
77 logger.debug("debug message")
78 logger.info("info message")
79 logger.warn("warn message")
80 logger.error("error message")
81 logger.critical("critical message")
View Code

 

posted on 2017-11-07 16:19  舞曲  阅读(713)  评论(1编辑  收藏  举报

导航