【问题标题】:Python logging vs. write to filePython 日志记录与写入文件
【发布时间】: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 年。

标签: python logging file-writing bigdata


【解决方案1】:

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

logging 的优点:

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

logging 的缺点:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2015-12-29
      • 2017-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多