功能:格式化输出日志
五个级别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 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦