使用logging封装日志

自己封装的logging,封装日志的几个组件
Logger 记录器暴露了应用程序代码直接使用的接口。

Handler 处理器将日志记录(由记录器创建)发送到适当的目标。

Filter 过滤器提供了更细粒度的功能,用于确定要输出的日志记录。

Formatter 格式器指定最终输出中日志记录的样式。

日志等级说明:
DEBUG:程序调试bug时使用
INFO:程序正常运行时使用
WARNING:程序未按预期运行时使用,但并不是错误,如:用户登录密码错误
ERROR:程序出错误时使用,如:IO操作失败
CRITICAL:特别严重的问题,导致程序不能再继续运行时使用,如:磁盘空间为空,一般很少使用
默认的是WARNING等级,当在WARNING或WARNING之上等级的才记录日志信息。 日志等级从低到高的顺序是: DEBUG < INFO < WARNING < ERROR < CRITICAL

 

 1 import logging
 2 
 3 
 4 def mylog():
 5     # 创建日志器
 6     logger = logging.getLogger()
 7     # 设置日志级别
 8     logger.setLevel(logging.WARNING)
 9 
10     # 防止重复写日志,这里进行判断,若logger.handlers列表为空则添加
11     if not logger.handlers:
12         # 创建控制台处理器
13         sh = logging.StreamHandler()
14         # 将控制台处理器放到日志器中
15         logger.addHandler(sh)
16 
17         # 创建文件处理器
18         fh = logging.FileHandler('log4.txt', encoding='utf-8')
19         # 将文件处理器放到日志器中
20         logger.addHandler(fh)
21 
22         # 根据格式,创建格式器
23         fmt1 = "%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s"
24         formatter1 = logging.Formatter(fmt1)
25         fmt2 = "%(asctime)s - %(filename)s - %(levelname)s: %(message)s"
26         formatter2 = logging.Formatter(fmt2)
27 
28         # 给控制台处理器设置格式
29         sh.setFormatter(formatter1)
30         # 给文件处理器设置格式
31         fh.setFormatter(formatter2)
32 
33     return logger
34 
35 
36 mylog().debug("this is a debug msg")
37 mylog().info("this is a info msg")
38 mylog().warning("this is a warning msg")
39 mylog().error("this is a error msg")
40 mylog().critical("this is a critical msg")
View Code

 

控制台输出:

 

 

日志文件的输出:

 

posted @ 2023-04-04 17:51  furichan  阅读(19)  评论(0编辑  收藏  举报