log机制可以帮助我们定位和解决程序运行过程中的各种异常问题。python 中自带了logging模块以方便我们在代码中记录各种log信息并输出,下面我们简单介绍一下怎么使用。
首先,明确一点。print()如此便捷,为什么还需要用logging呢?
因为print()能输出的信息是有限的。
相较之下:1,logging可以设置不同的log等级,notest, debug, info, error, warning,critical(严重度递增);2,logging可以设置自定义的log信息格式;3,logging可以同时把log输出为文件,标准输出流等形式。
以代码举例:
import logging
logging.basicConfig(
format="[%(asctime)s] - %(levelname)-8s - %(module)s.%(name)s : %(message)s",
level=logging.INFO,
filename=(‘debug.log‘),
) #一种设置logging基本配置的方法。
#format:log内容的格式 ; level:log严重程度,如INFO表示记录严重度高于或等于INFO的log内容 ; filename:输出的文件
logger = logging.getLogger("my_logger") #新定义一个logger对象"my_logger",默认的为“root”
#getlogger的使用场景是,根据不同的模块,类,函数或者对象命名不同的logger
logger.warning("report warning <3") #使用新建的logger对象
logging.debug(‘invisible debug info‘) #log level置为INFO,所以log里看不见这条内容
logging.critical(‘critical‘) #使用默认的logger对象
代码执行结果:
如果我们将上面basicConfig()中的filename属性替换为handlers=[logging.StreamHandler()]则不输出log文件,而是将log信息输出到console窗口。
*C++中也有类似的机制,比如github上的spdlog库,只需#include "spdlog/spdlog.h",即可使用和python logging相似的log机制。
原文:https://www.cnblogs.com/henkenen/p/14392740.html