logging模块

 1 '''
 2 import logging
 3 
 4 # 1. 控制日志级别
 5 # 2. 控制日志格式
 6 # 3. 控制输出的目标为文件
 7 logging.basicConfig(filename='access.log',
 8                     format='%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s',
 9                     datefmt='%Y-%m-%d %H:%M:%S %p',
10                     level=10,
11                     )
12 
13 logging.debug('debug日志') # 10
14 logging.info('info日志')   # 20
15 logging.warning('warning日志') #30
16 logging.error('error日志')#40
17 logging.critical('critical日志') #50
18 
19 # 火警的级别
20 
21 # 大功率电器
22 # 抽烟
23 # 烧烤
24 
25 
26 
27 '''
28 # 1. 能够同时往终端与文件中记录日志
29 # 2. 能够修改字符串编码
30 
31 import logging
32 
33 # 1. logger对象: 负责生产各种级别的日志
34 logger1 = logging.getLogger('用户交易')  # 日志名用来标识日志的与什么业务有关
35 
36 # 2. filter对象: 过滤日志
37 
38 # 3. handler对象: 控制日志输出目标位置
39 fh1 = logging.FileHandler('a1.log',encoding='utf-8')
40 fh2 = logging.FileHandler('a2.log',encoding='utf-8')
41 ch = logging.StreamHandler()
42 
43 # 4. formmater对象
44 formatter1 = logging.Formatter(
45     fmt='%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s',
46     datefmt='%Y-%m-%d %H:%M:%S %p'
47 )
48 
49 formatter2 = logging.Formatter(
50     fmt='%(asctime)s - %(levelname)s :  %(message)s',
51     datefmt='%Y-%m-%d %H:%M:%S %p'
52 )
53 
54 # 5. 绑定logger对象与handler对象
55 logger1.addHandler(fh1)
56 logger1.addHandler(fh2)
57 logger1.addHandler(ch)
58 
59 # 6. 绑定handler对象与formatter对象
60 
61 fh1.setFormatter(formatter1)
62 fh2.setFormatter(formatter1)
63 ch.setFormatter(formatter2)
64 
65 # 7. 设置日志级别,有logger对象与handler对象两层关卡,必须都放行最终日志才会放行,通常二者级别相同
66 logger1.setLevel(10)
67 fh1.setLevel(10)
68 fh2.setLevel(10)
69 ch.setLevel(10)
70 
71 # 8. 使用logger对象产生日志
72 logger1.info('alex给egon转账1个亿')
基本使用
 1 standard_format = '%(asctime)s - task:%(name)s - %(filename)s:%(lineno)d -' 
 2                   ' %(levelname)s : [%(message)s]'
 3 
 4 simple_format = '%(filename)s:%(lineno)d - %(levelname)s : [%(message)s]'
 5 
 6 fh1_path = r'a1.log'
 7 fh2_path = r'a2.log'
 8 
 9 # log配置字典
10 LOGGING_DIC = {
11     'version': 1,
12     'disable_existing_loggers': False,
13     'formatters': {
14         'standard': {
15             'format': standard_format
16         },
17         'simple': {
18             'format': simple_format
19         },
20     },
21     'filters': {},
22     'handlers': {
23         #打印到终端的日志
24         'ch': {
25             'level': 'DEBUG',
26             'class': 'logging.StreamHandler',  # 打印到终端
27             'formatter': 'simple'
28         },
29         #打印到a1.log文件的日志
30         'fh1': {
31             'level': 'DEBUG',
32             'class': 'logging.FileHandler',  # 保存到文件
33             'formatter': 'standard',
34             'filename': fh1_path,  # 日志文件的路径
35             'encoding': 'utf-8',  # 日志文件的编码,再也不用担心中文log乱码了
36         },
37         # 打印到a2.log文件的日志
38         'fh2': {
39             'level': 'DEBUG',
40             'class': 'logging.FileHandler',  # 保存到文件
41             'formatter': 'simple',
42             'filename': fh2_path,  # 日志文件的路径
43             'encoding': 'utf-8',  # 日志文件的编码,再也不用担心中文log乱码了
44         },
45 
46     },
47     'loggers': {
48         '': {
49             'handlers': ['fh1', 'fh2', 'ch'],
50             'level': 'DEBUG',
51         },
52     },
53 }
配置字典
1 import logging.config
2 from conf import settings
3 
4 def get_logger(name):
5     logging.config.dictConfig(settings.LOGGING_DIC)
6     logger1=logging.getLogger(name)
7     return logger1
定义函数
原文地址:https://www.cnblogs.com/xuqidong/p/12014289.html