Python之logging 模块
一、日志相关概念
日志是一种可以追踪某些软件运行时所发生事件得方法。软件开发人员可以向他们得代码中调用日志记录的相关的方法
来表明发生了某些事情。
二、logging模块的日志级别
不同的应用程序所定义的日志级别时会有所差别的,logging 模块默认定于一了以下几个日志级别,它允许开发人员自动逸其他
日志级别,但是不被推荐的。
- DEBUG :最详细的日志信息,典型的应用场景是问题诊断
- INFO :信息详细程度仅次于DEBUG,通常只记录关键节点的信息,用于确认一切都是按照我们预期的那样进行工作
- WARNING:当某些不期望的事情发生记录信息(如内存快爆满),但是此时应用程序还是正常工作的
- ERROR :由于一个更严重的问题导致某些功能不能正常运行时记录的信息
- CRITICAL :当发生严重的错误,导致程序不能继续运行时记录的信息2)日志级别(Level):
debug - info - warning -error - critical(FATA)
调试 基本 警告 报错 严重错误
三、简单的日志输出
from logging import handlers # 生成滚动日志时需要用 handlers.RotatingFileHandler,所以在这里需要导入 handlers 模块 import logging #第一步:首先创建一个日志收集器 logger = logging.getLogger("rizhi_shoujiqi.log") #第二步:设置自定义要收集的日志级别、日志格式、输出渠道 #1、设置 自定义要收集的日志级别 logger.setLevel(logging.INFO) # logging.INFO:表示手机INFO级别以上的日志 #2、设置自定义的日志格式(Formatter) # 时间:年月时分秒 + 收集器的名字 + 级别 + 哪个文件的日志 + 行号 + 想要提示的信息 fmt_str = "%(asctime)s %(name)s %(levelname)s %(filename)s %(lineno)d %(message)s" #实例化一个日志格式类 formatter = logging.StreamHandler() #3、设置日志输出渠道 handler1 = logging.StreamHandler() # 表示日志可以输出到控制台 #第三步:设置日志输出渠道当中的日志显示格式 handlerl.setFormatter(formatter) #第四步:将日志输出渠道与日志收集器绑定起来 logger.addHandler(handler1) logger.info("hello,logging!!!")
拓展知识:上面我们只是演示了将日志输出到控制台的一种方式,但是如果我们想要用一个文件夹单独收集日志可不可以呢?那当然是可以的,代码以下:
#拓展:第二个渠道)实例化文件渠道(FileHandle) #FileHandler :表示每一次生成的日志都是最新的 #handle2 = logging.FileHandler("rizhi_shoujiqi.log", encoding="utf-8") #如果我们想到显示每一次的日志记录,那么可以采用滚动生成日志的方式 #滚动生成的区别:FileHandler 用 RotatingFileHandler 来替换,增加 maxBytes=1,backupCount=10 字段 handle2 = handlers.RotatingFileHandler("nmb-py37",maxBytes=1,backupCount=10,encoding="utf-8") # 设置渠道当中的日志显示格式 handle2.setFormatter(formatter) # 将渠道与日志收集器绑定起来 logger.addHandler(handle2)
# (指定handle3的日志级别为ERROR)文件渠道(FileHandle) handle3 = logging.FileHandler("rizhi_shoujiqi_error.log", encoding="utf-8") # 设置渠道当中的日志显示格式 handle3.setFormatter(formatter) # 设置handle3的日志输出级别为ERROR handle3.setLevel(logging.ERROR) # 将渠道与日志收集器绑定起来 logger.addHandler(handle3) logger.info("hello,logging!!") logger.warning("hello,warning!!") logger.error("你错了!!")