Python中使用with open写日志有什么弊端?和logging模块相比如何?

Python中使用with open写日志有什么弊端?和logging模块相比如何?

9 回复

精力时间挥洒不完,那就自己造轮子;否则,直接用轮子。


with open() 手动写日志,主要问题在于功能太简陋,就是个文件写入。它没有日志分级(DEBUG, INFO, WARNING这些)、没有自动轮转(文件大了不会切分)、没有统一格式、多线程/进程写还可能乱套,而且错误处理和性能优化都得自己来。

logging 模块就是专门解决这些问题的。它提供了完整的日志管理体系,包括分级过滤、多种输出目标(文件、控制台、网络等)、灵活的格式配置、自动日志轮转,并且是线程安全的。对于生产环境或复杂项目,logging 是标准做法。

简单来说,with open() 只适合临时、简单的记录;正经项目直接用 logging 模块,省心又专业。

总结:小脚本临时用用还行,正经项目无脑上 logging

原子性了解一下,异步了解一下,日志收集器了解一下

一般小项目直接用就是了

大量日志直接卡死, 还有这么解决并发问题? 怎么适配不同的 appender?

啊,write 写文件为什么直接 print,然后 shell 里面重定向到文件。

分文件怎么整?按日期 write 文件么?
还有如果真这样的话不如直接输出命令行 >> xxx.log

我们也是这么操作的。但是不同的是,我们单独开了进程写 log。log 进程订阅其他进程发布的消息,然后将消息写入日志中。但麻烦的是,找日志会找死人。。。

你要是想 log 到 stderr 怎么办?

回到顶部