二十八、深入浅出Python中的 logging模块
「@Author: Runsen」
【二十八、深入浅出Python中的 logging模块】logging模块是Python内置的标准模块 , 主要用于输出脚本运行日志 , 可以设置输出日志的等级、日志保存路径等 。
日志日志是一种可以追踪某些软件运行时所发生事件的方法 。
软件开发人员可以向他们的代码中调用日志记录相关的方法来表明发生了某些事情 。 一个事件可以用一个可包含可选变量数据的消息来描述 。 此外 , 事件也有重要性的概念 , 这个重要性也可以被称为严重性级(level) 。
五个级别其中Logging一共有五种级别 , 依次是DEBUG < INFO < WARNING < ERROR < CRITICAL
文章插图
# @Author:Runsen#引入了 logging 模块import loggingLOG_FORMAT = "%(asctime)s----%(name)s----%(levelname)s----%(message)s"#level 配置为 WARNING 信息 , 即只输出 WARNING 级别及其以上的信息 , # format指定了 format 格式的字符串 , 包括asctime运行时间 name模块名称、levelname(日志级别)message (日志内容)logging.basicConfig(level=logging.WARNING,format=LOG_FORMAT)logging.debug("This is a debug log")logging.info("This is a info log")logging.warning("This is a warning log")logging.error("This is a error log")logging.critical("This is a critical log")具体输出如下 。
2020-10-31 12:15:13,181----WARNING----This is a warning log2020-10-31 12:15:13,181----ERROR----This is a error log2020-10-31 12:15:13,182----CRITICAL----This is a critical log为什么DEBUG和INFO的信息没有输出?
因为我们在全局配置的时候设置了输出为 WARNING 级别 , 所以 DEBUG和INFO 级别的信息就被过滤掉了 。
日志信息的输出格式在basicConfig 的format参数指定日志信息的输出格式 。
文章插图
logging模块logging模块是Python内置的标准模块 , 主要用于输出运行日志 , 可以设置输出日志的等级、日志保存路径、日志文件和回滚等; 可以说 , logging模块主要由4部分组成 , 分别是Logger , Handler , Filters和Formatter 。
文章插图
模块化组件使用模块化组件使用流程:
- 创建一个logger(日志处理器)对象
- 定义handler(日志处理器) , 决定把日志发到哪里 。 常用的有StreamHandler , 输出到控制台 。 FileHandler输出到文件 。
- 设置日志级别(level)和输出格式Formatters(日志格式器)
- 把handler添加到对应的logger中去
- 日志输出
'''@Author:Runsen@Wechat:RunsenL'''import osimport timeimport logging# 第一步、创建一个logger(日志处理器)对象logger = logging.getLogger("%s_log" % __name__)logger.setLevel(logging.INFO)# 第三步、定义handler(日志处理器) , 决定把日志发到哪里 。 这里设置FileHandler输出到文件 。 rq = time.strftime('%Y%m%d%H%M', time.localtime(time.time()))# 在当前路径下新建logs文件夹if os.path.exists("Logs"):passelse:os.mkdir("Logs")log_name = "./Logs/"+ rq + '.log'print(log_name)# a模式追加handler = logging.FileHandler(log_name, mode='w')handler.setLevel(logging.WARNING)# 第三步、设置日志级别(level)和输出格式Formatters(日志格式器)formatter = logging.Formatter("%(asctime)s----%(filename)s----[line:%(lineno)d]----%(levelname)s:%(message)s")handler.setFormatter(formatter)# 第四步、把handler添加到对应的logger中去logger.addHandler(handler)# 第五步、日志输出logger.debug('this is a logger debug message')logger.info('this is a logger info message')logger.warning('this is a logger warning message')logger.error('this is a logger error message')logger.critical('this is a logger critical message')具体的Logs文件夹中Log文件内容如下 。
文章插图?
本文已收录 GitHub , 传送门~[1], 里面更有大厂面试完整考点 , 欢迎 Star 。
?
Reference[1]
传送门~:
- 空调|让格力、海尔都担忧,中国取暖“新潮物”强势来袭,空调将成闲置品?
- 占营收|华为值多少钱
- 俄罗斯手机市场|被三星、小米击败,华为手机在俄罗斯排名跌至第三!
- 页面|如何简单、快速制作流程图?上班族的画图技巧get
- 操盘|中兴统一操盘中兴、努比亚、红魔三大品牌
- 印度|拒绝华为后,印度、英国斥资数十亿求助日本
- 华为|台积电、高通、华为、小米接连宣布!美科技界炸锅:怎么会这样!
- 拍照|iPhone12还没捂热13就曝光了,屏幕、信号、拍照均有升级!
- 路由器|家里无线网经常断网、网速慢怎么办?教你几个小窍门,轻松解决
- 一图看懂!数字日照、新型智慧城市这样建(上篇)|政策解读 | 新型
