Python的学习之旅———logging模块

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python的学习之旅———logging模块相关的知识,希望对你有一定的参考价值。

日志模块的级别

critical=50
error=40
warning=30
info=20
debug=10
notset=0

1 import logging #默认的日志级别是:warning,默认的输出目标是:终端
2 
3 logging.debug(debug)
4 logging.info(info)
5 logging.warning(warn123)
6 logging.error(error)
7 logging.critical(critical)

logging模块的主要部分

1logger=logging.getLogger()  l

ogger:日志对象,logging模块中最基础的对象,用logging.getLogger(name)方法进行初始化,name可以不填。通常logger的名字我们对应模块名,如聊天模块、数据库模块、验证模块等。

2 Handler 对象

3 Formatter

4 Filter

 1 import logging
 2 #一:Logger对象:负责产生日志信息
 3 logger=logging.getLogger(root)
 4 
 5 
 6 #二:Filter对象:略
 7 
 8 
 9 #三:Handler对象:负责接收Logger对象传来的日志内容,控制打印到终端or文件
10 h1=logging.FileHandler(t1.log)
11 h2=logging.FileHandler(t2.log)
12 h3=logging.StreamHandler()
13 
14 
15 #四:formmater对象
16 #给文件
17 formatter1=logging.Formatter(
18     %(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s,
19     datefmt=%Y-%m-%d %H:%M:%S %p,
20 )
21 
22 #给终端
23 formatter2=logging.Formatter(
24     %(asctime)s - %(message)s,
25     datefmt=%Y-%m-%d %H:%M:%S %p,
26 )
27 
28 #五:为handler对象绑定日志格式,设置日志级别
29 #给文件:绑定到Filehandler对象
30 h1.setFormatter(formatter1)
31 h2.setFormatter(formatter1)
32 #给终端:绑定到Streamhandler对象
33 h3.setFormatter(formatter2)
34 
35 #设置日志级别
36 h1.setLevel(30)
37 h2.setLevel(30)
38 h3.setLevel(30)
39 
40 
41 #六:把h1,h2,h3都add给logger,这样logger对象才能把自己的日志交给他们三负责输出
42 logger.addHandler(h1)
43 logger.addHandler(h2)
44 logger.addHandler(h3)
45 logger.setLevel(20) #括号的数字一定要<=Hanlder对象的数字
46 
47 
48 #七:测试
49 # logger.debug(‘debug‘)
50 # logger.info(‘info‘)
51 # logger.warning(‘warn123‘) #30
52 # logger.error(‘error‘)
53 # logger.critical(‘critical‘)

 用法

技术分享
 1 """
 2 logging配置
 3 """
 4 
 5 import os
 6 import logging.config
 7 
 8 # 定义三种日志输出格式 开始
 9 
10 standard_format = [%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d] 11                   [%(levelname)s][%(message)s] #其中name为getlogger指定的名字
12 
13 simple_format = [%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s
14 
15 id_simple_format = [%(levelname)s][%(asctime)s] %(message)s
16 
17 # 定义日志输出格式 结束
18 
19 logfile_dir = os.path.dirname(os.path.abspath(__file__))  # log文件的目录
20 
21 logfile_name = all2.log  # log文件名
22 
23 # 如果不存在定义的日志目录就创建一个
24 if not os.path.isdir(logfile_dir):
25     os.mkdir(logfile_dir)
26 
27 # log文件的全路径
28 logfile_path = os.path.join(logfile_dir, logfile_name)
29 
30 # log配置字典
31 LOGGING_DIC = {
32     version: 1,
33     disable_existing_loggers: False,
34     formatters: {
35         standard: {
36             format: standard_format
37         },
38         simple: {
39             format: simple_format
40         },
41     },
42     filters: {},
43     handlers: {
44         #打印到终端的日志
45         console: {
46             level: DEBUG,
47             class: logging.StreamHandler,  # 打印到屏幕
48             formatter: simple
49         },
50         #打印到文件的日志,收集info及以上的日志
51         default: {
52             level: DEBUG,
53             class: logging.handlers.RotatingFileHandler,  # 保存到文件
54             formatter: standard,
55             filename: logfile_path,  # 日志文件
56             maxBytes: 1024*1024*5,  # 日志大小 5M
57             backupCount: 5,
58             encoding: utf-8,  # 日志文件的编码,再也不用担心中文log乱码了
59         },
60     },
61     loggers: {
62         #logging.getLogger(__name__)拿到的logger配置
63         ‘‘: {
64             handlers: [default, console],  # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕
65             level: DEBUG,
66             propagate: True,  # 向上(更高level的logger)传递
67         },
68     },
69 }
70 
71 
72 def load_my_logging_cfg():
73     logging.config.dictConfig(LOGGING_DIC)  # 导入上面定义的logging配置
74     logger = logging.getLogger(__name__)  # 生成一个log实例
75     logger.info(It works!)  # 记录该文件的运行状态
76 
77 if __name__ == __main__:
78     load_my_logging_cfg()
79 
80 logging配置文件
logging

 






以上是关于Python的学习之旅———logging模块的主要内容,如果未能解决你的问题,请参考以下文章

Python学习之旅 —— 基础篇模

python小白学习之旅5

Python学习之旅---动态导入模块

Python学习之旅---模块介绍(configparser 字典配置解析模块)

Python学习之旅---requests模块

Python学习之旅---模块介绍(re模块,正则表达式)