文章目录
前言
博主目前只接触到了简单用法,本文只记录了logging的基本用法,不常用的则暂时忽略。待以后用到更高级的用法时再学习和记录。
参考资料:
logging — Python 的日志记录工具(官方文档)
一、logging基本用法示例
由于一个简单的例子能够让人更快地掌握基本用法,所以我个人比较喜欢先记录最基本的最常用的用法。等简单的学会了,再慢慢探索更高级的用法。
1.导入模块
import logging
2.设置基本配置
logging.basicConfig(level=logging.INFO)
level=logging.INFO 表示记录所有级别高于或等于 INFO 的日志信息
3.记录日志
logging.info('This is an info message')
二、日志级别
Python logging 模块提供了多种日志级别,每个级别用于表示不同严重程度的日志消息。以下是所有日志级别,从最低到最高:
1.DEBUG
数值:10
描述:用于诊断问题时详细的信息。通常只有在诊断问题时才会记录这些信息。
使用示例:logging.debug(‘This is a debug message’)
2.INFO
数值:20
描述:确认一切正常的运行信息。通常用来记录程序的正常运行过程中的关键步骤。
使用示例:logging.info(‘This is an info message’)
3.WARNING
数值:30
描述:提示可能发生的问题,程序仍能正常运行。用来记录程序运行中的一些潜在问题。
使用示例:logging.warning(‘This is a warning message’)
4.ERROR
数值:40
描述:记录发生的错误,程序可能无法继续运行。用来记录由于某个问题导致程序无法执行某些功能。
使用示例:logging.error(‘This is an error message’)
5.CRITICAL
数值:50
描述:记录严重错误,程序无法继续运行。用来记录导致程序终止的严重问题。
使用示例:logging.critical(‘This is a critical message’)
6.示例
使用 basicConfig 方法可以设置日志记录的最低级别。只有级别高于或等于设置级别的日志信息才会被记录。
以下例子中,level=logging.INFO 表示只记录 INFO 级别及以上的日志信息,因此 DEBUG 级别的消息不会被记录。
import logging
logging.basicConfig(level=logging.INFO)
logging.debug('This is a debug message') # 不会被记录
logging.info('This is an info message') # 会被记录
logging.warning('This is a warning message') # 会被记录
logging.error('This is an error message') # 会被记录
logging.critical('This is a critical message') # 会被记录
7.自定义日志级别
在下面的例子中,通过 addLevelName 方法添加自定义日志级别,并定义一个方法 custom 以便使用该日志级别。在示例中,CUSTOM_LEVEL 被设置为 25,介于 INFO 和 WARNING 之间。
import logging
# 定义自定义日志级别
CUSTOM_LEVEL = 25
logging.addLevelName(CUSTOM_LEVEL, 'CUSTOM')
# 定义自定义日志记录方法
def custom(self, message, *args, **kws):
if self.isEnabledFor(CUSTOM_LEVEL):
self._log(CUSTOM_LEVEL, message, args, **kws)
# 将自定义方法添加到 Logger 类
logging.Logger.custom = custom
# 获取 Logger 实例并设置日志级别
logger = logging.getLogger(__name__)
logger.setLevel(CUSTOM_LEVEL)
# 使用自定义日志级别记录消息
logger.custom('This is a custom level message')
三、将日志记录到文件
在basicConfig中加上filename参数
import logging
logging.basicConfig(filename="test.log", level=logging.INFO)
logging.debug("this is debug")
logging.info("this is info")
logging.error("this is error")
四、设置格式
默认输出的格式包含3部分,日志级别、日志记录器的名字、以及日志内容,中间用“:”连接。 如果我们想改变日志格式,例如想加入日期时间、显示日志器名字,我们是可以用format参数来设置日志的格式
import logging
logging.basicConfig(format='%(asctime)s %(levelname)s %(name)s %(message)s')
logging.error("this is error")
输出:
2024-7-18 21:08:12,547 ERROR root this is error
以下为格式及其属性: