为了账号安全,请及时绑定邮箱和手机立即绑定

Python基础模块:logging模块

标签:
Python

功能:格式化输出日志
五个级别DEBUG,INFO,WARING,ERROR,CRITICAL,默认打印WARING以上级别输入,可更改。
默认实例是root,建议使用时不要使用默认实例

import logging
import sys
使用的时候新建实例:
# 实例化logging,必须给定一个name,默认是root,不推荐。
logger_instence = logging.getLogger("name")  
# 设置实例级别,INFO以上才会显示,默认显示WARING以上。(可选择设置)
logger_instence.setLevel(logging.INFO)          
# 设置日志格式,默认格式:日志级别:实例名:信息
formatter = logging.Formatter('%(asctime)s %(levelname)-8s: %(message)s')
# 指定日志处理方法,比如打印到屏幕,存储到文件等,本例存储到文件
file_handler = logging.FileHandler("test.log")
file_handler.setFormatter(formatter)  # 可以通过setFormatter指定输出格式
file_handler.formatter = formatter        # 也可以给file_handler的formatter属性直接赋值
#再创建一个打印到屏幕的handler
print_handler = logging.StreamHander(sys.stdout)
print_handler.setFormatter(formatter)
# 把指定的日志处理方法添加到实例,可以添加多个日志处理方法
logger_instence.addHandler(file_handler)                     # 负责存储到文件
logger_instence.addHandler(print_handler)                   # 负责打印到屏幕
# logger_instence,在屏幕显示的同时,把日志存储到文件
logger_instence.debug(“这是一个debug测试”)
logger_instence.info(“这是一个info测试”)
logger_instence.warning(“这是一个waring测试”)
logger_instence.error(“这是一个error测试”)
logger_instence.critical(“这是一个critical测试”)

重复调用logging模块,重复输出

主要是因为logger.addHandler,每调用一次就加一次。
所以可以通过下面两个方法避免。
1、使用removeHandler()把这个logger里的handler移除掉
2、在log方法里做判断,如果这个logger已有handler,则不再添加handler。
logger_instence实例后添加。

logger_instence = logging.getLogger("name")  if not logger_instence.Handlers:...

关于logger,以上是基本的使用方法,或者说是一个简单的模板,更高级的使用是需要不断实践的,自认为没有下面这两位写的好,理解了下面两位logging模块的文章。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消