我们来详细讲解一下“Python的log日志功能及设置方法”的完整攻略。
1. 什么是log日志
log是程序开发过程中常用的调试工具,通过记录程序运行过程中的各种状态信息和错误信息,方便程序开发人员进行调试和错误排查。Python中提供了logging模块,可以方便地实现程序输出log日志的功能。
2. logging模块的使用
2.1 基本用法
logging模块主要包含四个部分:logger、handler、filter和formatter。其中,logger是log信息的管理器,可以为不同的模块或者类设置不同的logger;handler是用来处理log信息的方式,可以将信息输出到文件、控制台等不同位置;filter可以对log信息进行过滤,只输出符合条件的信息,比如只输出warning信息;formatter定义输出log信息的格式。
下面是一个简单的示例,用来输出log信息到控制台:
import logging
# 创建日志记录器
logger = logging.getLogger(__name__)
# 设置日志记录级别
logger.setLevel(logging.DEBUG)
# 创建控制台输出处理器
ch = logging.StreamHandler()
# 设置输出处理器级别
ch.setLevel(logging.DEBUG)
# 创建输出格式化器
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# 将输出格式化器设置到输出处理器中
ch.setFormatter(formatter)
# 将输出处理器添加到logger中
logger.addHandler(ch)
# 输出日志
logger.debug('debug message')
logger.info('info message')
logger.warning('warning message')
logger.error('error message')
logger.critical('critical message')
上面的代码中,首先创建了一个logger实例,并设置记录级别为DEBUG。然后创建一个控制台输出处理器,设置记录级别为DEBUG,并将输出格式化器添加到处理器中。最后将处理器添加到logger中,这样所有的日志信息都会输出到控制台。
输出结果如下:
2022-02-28 17:03:58,568 - __main__ - DEBUG - debug message
2022-02-28 17:03:58,568 - __main__ - INFO - info message
2022-02-28 17:03:58,569 - __main__ - WARNING - warning message
2022-02-28 17:03:58,569 - __main__ - ERROR - error message
2022-02-28 17:03:58,570 - __main__ - CRITICAL - critical message
2.2 输出到文件
除了输出到控制台,我们也可以将log信息输出到文件中,可以通过FileHandler来实现。
下面是一个示例,将log信息输出到文件中:
import logging
# 创建日志记录器
logger = logging.getLogger(__name__)
# 设置日志记录级别
logger.setLevel(logging.DEBUG)
# 创建文件输出处理器
fh = logging.FileHandler('example.log')
# 设置输出处理器级别
fh.setLevel(logging.DEBUG)
# 创建输出格式化器
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# 将输出格式化器设置到输出处理器中
fh.setFormatter(formatter)
# 将输出处理器添加到logger中
logger.addHandler(fh)
# 输出日志
logger.debug('debug message')
logger.info('info message')
logger.warning('warning message')
logger.error('error message')
logger.critical('critical message')
在上述示例代码中,创建了一个日志记录器,然后创建一个文件输出处理器,将输出级别设置为DEBUG,并将输出格式化器设置到处理器中。最后将处理器添加到logger中,将日志信息输出到example.log文件中。
2.3 如何使用Logrotate
日志记录在应用开发中是一个极其重要的事情。生成的日志文件很容易变得非常大,你会需要用到一些工具来轮换和压缩日志文件以节省磁盘空间。通常,你可以使用日志轮换程序如 logrotate 来完成这些任务。
接下来是logrotate.conf 的一个例子:
/var/log/example.log {
weekly
rotate 4
compress
delaycompress
missingok
notifempty
copytruncate
}
在上述代码中,定义一个将 example.log 文件轮换及压缩的规则。其意思为每隔一个星期执行一次轮换、最多保留最新的4个文件副本、对日志文件进行压缩及滚动日志前的一次轮换有必要等滚动后再压缩前的一次轮换、错误信息是可忽略的、如果文件是空的那么不执行轮换、以及重写当前正在写入的日志文件而不是重命名(这启用了复制和截断方法)。
3. 总结
logging模块提供了非常方便的工具,可以记录程序的运行状态信息和错误信息。通过合理设置,我们可以将log信息输出到不同的位置,便于程序的调试和修改。在实际的项目中,我们需要根据需求对logging模块进行定制,以便更好的满足项目的需求。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python的log日志功能及设置方法 - Python技术站