Python日志双输出秘籍:同时打印到屏幕和文件的3种实用方法
调试Python程序时,开发者经常面临一个两难选择:既需要实时查看控制台输出以便快速定位问题,又需要将日志持久化保存供后续分析。本文将深入探讨三种主流实现方案,从基础到进阶,帮助开发者根据项目需求选择最适合的日志管理策略。
1. 基础方案:sys.stdout重定向与包装
对于小型脚本或快速原型开发,直接操作标准输出流是最轻量级的解决方案。Python的sys.stdout本质上是文件对象,我们可以通过重定向实现双输出。
import sys
class DualOutput:
def __init__(self, filename):
self.terminal = sys.stdout
self.log = open(filename, "a", buffering=1) # 行缓冲模式
def write(self, message):
self.terminal.write(message)
self.log.write(message)
def flush(self):
self.terminal.flush()
self.log.flush()
# 使用示例
sys.stdout = DualOutput('app.log')
print("这条消息会同时显示在屏幕和日志文件中")
关键参数说明:
| 参数 | 类型 | 默认值 | 推荐设置 | 作用 |
|---|---|---|---|---|
| buffering | int | -1 | 1 | <
149



被折叠的 条评论
为什么被折叠?



