Python 日志记录与写入文件

Posted

技术标签:

【中文标题】Python 日志记录与写入文件【英文标题】:Python logging vs. write to file 【发布时间】:2016-04-24 05:15:41 【问题描述】:

哪个更有效率?与使用 logger.info() 相比,使用 open() -> write() -> close() 是否有缺点?

PS。我们正在为一所大学积累查询日志,所以它有可能很快变成大数据(考虑到每天查询日志的最小-最大上限为 3GB-9GB,并且它将终生 24/7 持续运行)。如果您能非常详细地及时解释和区分效率和容易出错的方面,我们将不胜感激。

【问题讨论】:

我非常怀疑写入日志文件的应用程序是否被视为“大数据”,除非您每秒生成数兆字节的文本。 如果您认为这是大数据,那么当您开始使用实际的大数据时,您会大吃一惊。 @cricket_007 如果我夸大了我很抱歉,只是我们每天最多累积大约 9GB 的查询日志,我们的这个引擎将一直被我们的大学使用融合之日。 @BurhanKhalid 是的,我明白。但是每天有 9GB 的数据,一年 24/7 运行,我想我们很快就会在几年内达到这个期限。 (尽管我们可能会因资源有限的问题而删除不必要的) @AngeloSembrano:每天 9GB 不是“大数据”(没有具体的定义,但你知道我的意思)。您的所有数据都可以存放在一个未压缩的硬盘驱动器上,可存放未来 2 年。 【参考方案1】:

使用更准确地描述您正在尝试做的事情的方法。你在做日志条目吗?使用logger.*。如果(且仅当!)这成为性能问题,则对其进行更改。在那之前,这是一个你不知道是否需要的优化。

logging 的优点

它是语义的。当您看到 logging.info(...) 时,您就知道您正在编写一条日志消息。 这是惯用的。这就是您编写 Python 日志的方式。 效率很高。也许不是非常高效,但它被彻底使用了,它有很多很好的优化(比如不在日志消息上运行字符串插值,因为日志级别等不会发出)。

logging 的缺点:

这并不像发明自己的解决方案那么有趣(这总是会变成一个没有功能、测试不佳、效率较低的logging 版本)。

除非您知道它不够高效,否则我强烈建议您使用它。同样,如果数据证明它不够用,您以后可以随时更换它。

【讨论】:

【参考方案2】:

除非您遇到内置功能问题,否则最好使用内置工具。

所以,请使用内置的日志记录功能。它经过验证、测试并且非常灵活 - 这是 open() -> f.write() -> close() 无法实现的。

【讨论】:

以上是关于Python 日志记录与写入文件的主要内容,如果未能解决你的问题,请参考以下文章

python日志的记录与保存

如何使用日志记录Python模块写入文件?

仅在出现错误时创建 Python 日志文件(使用日志记录模块)

删除日志文件后python记录丢失消息

Python中的多行日志记录

python日志记录是不是刷新每个日志?