1、logging模块使用方法
logger提供了应用程序可以直接使用的接口;
handler将(logger创建的)日志记录发送到合适的目的输出;
filter提供了细度设备来决定输出哪条日志记录;
formatter决定日志记录的最终输出格式。
import logging
logger = logging.getLogger("test") # 定义对应的程序模块名name,默认是root
logger.setLevel(logging.DEBUG) # 指定最低的日志级别 critical > error > warning > info > debug
consol_haddler = logging.StreamHandler() # 日志输出到屏幕控制台
consol_haddler.setLevel(logging.INFO) # 设置日志等级
# 这里进行判断,如果logger.handlers列表为空,则添加,否则,直接去写日志,解决重复打印的问题
if not logger.handlers:
file_haddler = logging.FileHandler("log.txt",encoding="utf-8") # 向文件log.txt输出日志信息,encoding="utf-8",防止输出log文件中文乱码
file_haddler.setLevel(logging.WARNING) # 设置输出到文件最低日志级别
formatter = logging.Formatter("%(asctime)s %(name)s- %(levelname)s - %(message)s")
# %(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
# %(name)s 自定义的模块名
consol_haddler.setFormatter(formatter) # 选择一个输出格式,可以定义多个输出格式
file_haddler.setFormatter(formatter)
logger.addHandler(file_haddler) # 增加指定的handler
logger.addHandler(consol_haddler)
logger.debug("test1")
logger.info("test2")
logger.warning("test3")
logger.error("test4")
控制台输出结果如下图:
log.txt输入结果如下图:
这样写大家有没有发现debug及info级别的log在控制台显示出来也是红色,并没有区分。正常情况下应该显示不同颜色,比如debug--白色,info--绿色,waining--红色等等。请看我的下一篇博客。传送门:https://blog.csdn.net/xugexuge/article/details/87916020