logging模块内容非常多,这里只做最简单的应用,更多内容可以阅读logging模块官方文档
日志等级从低到高分为:
Debug:调试信息,详细的信息,通常出现在诊断问题上
INFO:信息,确认一切按预期运行
WARNING(默认):警告,程序运行中发生了预期之外的事情,但是程序依然可以按预期完成工作
ERROR:错误,程序无法正常执行完
CRITICAL:极其严重,程序可能会中断,无法继续执行
可以直接通过logging模块调用不同的方法实现不同级别日志信息的打印
logging.info("info信息")
logging.warning("warning信息")
logging.debug("debug信息")
logging.error("error信息")
logging.critical("critical信息")
上面的代码执行结果可以看到,明明我们调用了5中级别日志的打印,但是实际输出了的话只有warning、error和critical三种级别。原因是logging模块默认设置的日志级别是warning,而debug和info的级别是低于warning的,所以不会打印这两种日志信息。如果我们需要指定显示的日志信息的话,我们需要调用basicConfig()方法
语法:
logging.basicConfig(level=logging.DEBUG, # 确定日志级别
filename="rizhi.log", # 日志文件名
filemode="w", # 文件操作模式
format="%(asctime)s-%(filename)s[line:%(lineno)d]-%(levelname)s:%(message)s" # 日志信息显示格式
)
import logging
logging.basicConfig(level=logging.DEBUG
)
logging.info("info信息")
logging.warning("warning信息")
logging.debug("debug信息")
logging.error("error信息")
logging.critical("critical信息")
如果需要将日志以指定的格式写入到日志文件,则需要制定filename、filemode和format三个参数的值
import logging
logging.basicConfig(level=logging.DEBUG,
filename="rizhi.log",
filemode="w",
format="%(asctime)s-%(filename)s[line:%(lineno)d]-%(levelname)s:%(message)s"
)
logging.info("info信息")
logging.warning("warning信息")
logging.debug("debug信息")
logging.error("error信息")
logging.critical("critical信息")
import logging
# 创建一个logger对象
logger = logging.getLogger()
# 设定log日志级别
logger.setLevel(logging.INFO)
# 创建一个FileHandler用于创建日志文件
log_filename = "logrizhi.log"
fp = logging.FileHandler(log_filename, mode="w")
fp.setLevel(logging.DEBUG)
# 创建一个StreamHandler对象用于在控制台输出日志
ch = logging.StreamHandler()
ch.setLevel(logging.WARNING)
# 通过Formatter类制定日志信息格式
formatter = logging.Formatter("%(asctime)s-%(filename)s[line:%(lineno)d]-%(levelname)s:%(message)s")
fp.setFormatter(formatter)
ch.setFormatter(formatter)
# 将日志文件和控制台打印的对象添加到logger对象
logger.addHandler(fp)
logger.addHandler(ch)
logging.info("info信息")
logging.warning("warning信息")
logging.debug("debug信息")
logging.error("error信息")
logging.critical("critical信息")