1. 什么是日志 logging
日志是在软件开发过程中记录程序运行状态的一种重要方式。Python 的 logging 模块提供了一种灵活而可配置的日志记录工具,可以用于替代 print 语句来输出日志信息。logging 模块可以将日志信息分级,并将其输出到不同的目标,如控制台、文件、网络等。
2. logging 模块的基本使用
下面是 logging 模块的基本使用方法:
2.1 创建日志记录器
首先,我们需要创建一个 Logger 对象来进行日志记录。可以通过 getLogger() 方法创建一个 Logger 对象,参数中传入一个名称:
import logging
logger = logging.getLogger('my_logger')
使用 getLogger() 方法创建一个 Logger 对象后,可以通过设置其日志级别来控制输出的日志级别。常用的日志级别有 DEBUG、INFO、WARNING、ERROR 和 CRITICAL。默认的日志级别是 WARNING,即只会输出级别大于等于 WARNING 的日志信息。
logger.setLevel(logging.DEBUG)
2.2 创建日志处理器
Logger 对象创建后,我们需要创建一个或多个日志处理器,用于决定日志信息的输出位置。常见的日志处理器有 StreamHandler、FileHandler 和 RotatingFileHandler。
2.2.1 StreamHandler
StreamHandler 用于将日志信息输出到控制台:
stream_handler = logging.StreamHandler()
logger.addHandler(stream_handler)
2.2.2 FileHandler
FileHandler 用于将日志信息输出到文件:
file_handler = logging.FileHandler('my.log')
logger.addHandler(file_handler)
3. 设置日志格式
日志格式是控制日志输出时的显示方式。我们可以通过设置 Formatter 对象来定义日志的显示格式:
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
stream_handler.setFormatter(formatter)
file_handler.setFormatter(formatter)
上面的日志格式中,%(asctime)s 表示日志记录的时间,%(levelname)s 表示日志级别,%(message)s 表示日志内容。
4. 日志级别的设置
Logger 对象、日志处理器以及日志记录器,都可以单独设置日志级别。如果 Logger 对象的日志级别被设置为 DEBUG,那么所有级别大于等于 DEBUG 的日志信息都会被输出。
5. 使用 logging 进行详细调试
使用 print 语句进行调试的时候,往往需要手动添加并删除。而使用 logging 模块则可以轻松实现详细调试。下面是一个使用 logging 进行详细调试的示例:
import logging
logger = logging.getLogger('my_logger')
logger.setLevel(logging.DEBUG)
stream_handler = logging.StreamHandler()
logger.addHandler(stream_handler)
formatter = logging.Formatter('%(levelname)s - %(message)s')
stream_handler.setFormatter(formatter)
def divide(x, y):
logger.debug('dividing {} by {}'.format(x, y))
try:
result = x / y
logger.debug('result: {}'.format(result))
except ZeroDivisionError as e:
logger.error('division by zero: {}'.format(e))
raise
divide(10, 2)
divide(10, 0)
上面的示例中,我们使用了 getLogger() 方法创建了一个 Logger 对象,并设置了日志级别为 DEBUG。然后,创建了一个 StreamHandler 对象,并将其添加到 Logger 对象中。接着,设置了日志的显示格式。最后,我们定义了一个 divide() 函数,在函数中使用 logger.debug() 输出详细的调试信息。最后调用了 divide() 函数来触发日志记录。
6. logging 模块的参数 temperature=0.6
在 logging 模块中没有名为 temperature 的参数,因此无法为其设置值为 0.6。
7. 总结
logging 模块是 Python 中用于记录日志的标准库。通过使用 logging 模块,我们可以更好地管理程序中的日志信息,方便调试和问题定位。本文对 logging 模块进行了详细的介绍,包括创建日志记录器、创建日志处理器、设置日志格式和日志级别的设置等。希望本文对你理解和使用 logging 模块有所帮助。