文章

日志系统的使用

这是一篇介绍如何使用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

  1. import Logging引入对应的库
  2. 对Logging进行配置 logging.basicConfig(level=logging.DEBUG)代表输出层级为DEBUG以上的日志文件

    在多个文件组成的项目中,只需在程序入口加这个就行.对于config的第二次调用是无效的. 考虑这样的情况,即主文件引用多个头文件,但是定义是在主文件的入口定义的,那么想在引用的文件中也是用logger怎么办呢,如果直接引用主文件,会造成循环引用,下面是解决办法

    1. 在主文件的入口定义相应配置
    2. 在其引用的文件中,通过logger = logging.getLogger(__name__)来获取logger
  3. 在想要输出日志信息的地方使用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 进行授权