Python Logging日志

Python logging 日志

Python 的 logging 模块为我们提供了一种灵活且强大的日志记录机制,可以帮助我们追踪程序的运行状况,方便调试和排错。

核心组件

  • Logger:日志记录器,表示一个特定的日志通道。
  • Handler:日志处理器,决定日志消息发送到哪里,比如控制台、文件、邮件等。
  • Formatter:日志格式化器,控制日志消息的格式。
  • Filter:日志过滤器,决定哪些日志记录应该被处理器处理。

基本用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import logging

# 配置基本设置
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')

# 创建一个日志记录器
logger = logging.getLogger(__name__)

# 记录不同级别的日志
logger.debug('这是一个调试信息')
logger.info('一条信息')
logger.warning('发生了一些意外')
logger.error('出现了一个错误')
logger.critical('严重错误')

日志级别

  • DEBUG:详细的调试信息。
  • INFO:确认程序正常运行的信息。
  • WARNING:表示发生了一些意外,或者预示着未来可能出现问题。
  • ERROR:由于较严重的问题,程序无法执行某些功能。
  • CRITICAL:严重错误,表示程序可能无法继续运行。

自定义日志

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import logging

# 创建一个日志记录器
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)

# 创建一个文件处理器
file_handler = logging.FileHandler('my_app.log')
file_handler.setLevel(logging.INFO)

# 创建一个格式化器
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)

# 将处理器添加到日志记录器
lo gger.addHandler(file_handler)

# 记录日志
logger.debug('调试信息')
logger.info('信息')

其他功能

  • 多个处理器:可以向一个日志记录器添加多个处理器,将日志发送到不同的地方。
  • 过滤器:可以根据级别、记录器名称或其他条件过滤日志记录。
  • 日志记录属性:日志记录包含额外信息,如时间戳、进程ID等。
  • 配置文件:可以使用配置文件管理日志设置。

例子:使用 JSON 格式的结构化日志

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import logging
import json

class CustomFormatter(logging.Formatter):
def format(self, record):
log_dict = {
'timestamp': self.formatTime(record, self.datefmt),
'level': record.levelname,
'message': record.msg,
# 添加其他字段
}
return json.dumps(log_dict)

# ... (其余代码)

总结

Python 的 logging 模块为我们提供了强大的日志功能,通过合理配置和使用,可以帮助我们更好地理解程序的运行状态,定位问题,提高程序的稳定性和可维护性。在实际开发中,我们需要根据不同的应用场景,选择合适的日志级别、处理器、格式化器和过滤器,以达到最佳的日志效果。


Python Logging日志
https://chrrr1y.github.io/2024/08/15/Python日志/
作者
Chrrr1y
发布于
2024年8月15日
更新于
2024年8月15日
许可协议