日志系统的使用
这是一篇介绍如何使用logging工具帮助项目debug的文章
日志系统的使用
Logging的作用
相比于每次print调试, 还要后面找到他删除,Logging可以分级存储日志信息到文件中,可以随时开关,不用再删掉.不仅如此,还不用担心输出到控制台的信息过多导致信息被覆盖的问题.
py中的Logging
各个语言都有对应的Logging库,python的Logging作为标准库,具有强大的功能 在这里,日志被分为5级,分别为
1
2
3
4
5
logging.debug('debug级别,一般用来打印一些调试信息,级别最低')
logging.info('info级别,一般用来打印一些正常的操作信息')
logging.warning('waring级别,一般用来打印警告信息')
logging.error('error级别,一般用来打印一些错误信息')
logging.critical('critical级别,一般用来打印一些致命的错误信息,等级最高')
下面是简单使用
start
import Logging
引入对应的库- 对Logging进行配置
logging.basicConfig(level=logging.DEBUG)
代表输出层级为DEBUG以上的日志文件在多个文件组成的项目中,只需在程序入口加这个就行.对于config的第二次调用是无效的. 考虑这样的情况,即主文件引用多个头文件,但是定义是在主文件的入口定义的,那么想在引用的文件中也是用logger怎么办呢,如果直接引用主文件,会造成循环引用,下面是解决办法
- 在主文件的入口定义相应配置
- 在其引用的文件中,通过
logger = logging.getLogger(__name__)
来获取logger
- 在想要输出日志信息的地方使用
logger.debug(graph.index_to_node[ploy.start])
输出对应等级的日志信息
下面是一个更全面的配置信息
1
2
3
4
5
6
7
log_file = os.path.join(log_folder, "debug.log")
logging.basicConfig(
filename=log_file,
level=logging.DEBUG, # 设置日志级别为 DEBUG
format="%(asctime)s - %(levelname)s - %(message)s", # 定义日志格式
filemode="w" # 每次运行时覆盖日志文件
)
flask中的logging
flask内置有logger,可以直接通过app.logger
来调用
- 调整日志级别:
app.logger.setLevel(logging.DEBUG) # 设置日志级别为DEBUG
- 添加文件处理器:
1 2 3 4 5
from logging import FileHandler file_handler = FileHandler('app.log') file_handler.setLevel(logging.DEBUG) app.logger.addHandler(file_handler)
- 格式化输出:
1 2 3 4
from logging import Formatter formatter = Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') file_handler.setFormatter(formatter)
本文由作者按照 CC BY 4.0 进行授权