一、日志相关概念
日志是一种可以追踪某些软件运行时所发生事件得方法。软件开发人员可以向他们得代码中调用日志记录的相关的方法来表明发生了某些事情。
二、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("你错了!!")