python之logging模块的使用

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信息")

三、 logger对象的使用,创建日志文件的同时打印到终端

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信息")

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章