代码之家  ›  专栏  ›  技术社区  ›  Aaron Yodaiken Stephen Chung

使用数据库进行日志记录

  •  8
  • Aaron Yodaiken Stephen Chung  · 技术社区  · 14 年前

    为什么大多数日志看起来都是纯文本的,而不是放在MySQL/其他类型的数据库中?

    在我看来,把它们放进数据库会使分析变得非常、非常容易,但这会以牺牲速度或其他什么为代价吗?

    (我并不关心可移植性,很明显,您的数据库连接会有文本日志。)

    6 回复  |  直到 14 年前
        1
  •  15
  •   VoteyDisciple    14 年前

    我能想到两大原因:

    尽管如此,在很多情况下,我想记录的信息只有在应用程序正常运行时,以及当我已经有了数据库连接时才是相关的。在这些情况下,我直接登录MySQL。

        2
  •  4
  •   T.Rob    14 年前

    • 少运动部件
    • 无需安装
    • 低技能壁垒
    • 速度
    • 一套成熟的日志、解析和管理工具
    • 不依赖于网络(假设本地磁盘而不是NFS或其他远程存储)
    • 可靠性
    • 仍然可以将这些数据放入数据库进行报告/分析
    • 格雷普是你的朋友

        3
  •  4
  •   Jay Godse    14 年前

    从历史上看,数据库是昂贵的,您肯定不会想在日志上浪费宝贵的数据库许可证。然而,今天的数据库和处理都相对便宜。使用数据库存储日志可能不会在经济上扼杀你。

    日志文件的优点是可以一直写到它的末尾。与使用数据库服务器相比,这是一种相对高效的操作。

    http://www.squidoo.com/sqlitehammer#module5800826 举个例子。

    --------2010年8月编辑------------

    SQLite的开发人员已经实现了writeahead日志记录 SQLite version 3.7.0 this video 更多细节。由于编写速度更快,SQLite作为日志数据库更有用。

        4
  •  1
  •   Ivan    14 年前

    但是,如果您需要通过简单的文本文件很难获得的分析或度量求值功能,那么这肯定没有错。这在很大程度上是个案。

        5
  •  1
  •   Bruno    14 年前

    我认为在远程机器上收集日志(例如,通过Linux上的syslog/rsyslog)进行备份时,DB日志记录会变得更有用:如果原始机器受到破坏,并且其日志发生了更改,这会很有用。在这种情况下,在数据库中收集日志(特别是在远程计算机上)非常有用,因为它可以帮助整理这些日志。您还可以通过诸如 phpLogCon ,或者使用自定义网页浏览它们(如果只是进行一些临时监视,通常比登录到计算机更容易)。

    也就是说,远程日志记录、数据库日志记录和浏览日志的工具都是相当独立的(我认为phpLogCon也可以处理文件日志)。如果我将日志存储在数据库中,那么我也会同时将日志存储在文件中,如果只是为了在与数据库的连接断开时能够读取日志的话。

        6
  •  1
  •   timdev    14 年前

    需要注意的是,没有理由不将日志写入一个文件(正如其他人所指出的,这个文件非常快速、高效和健壮),然后将数据卸载到一个数据库(可能在其他机器上)中,以便执行分析,而这种分析会因为具有典型的数据库功能而加快速度。当然,这是可能的,因为日志数据通常不需要立即处理——因此,将数据库的所有开销和脆弱性推迟到需要时再处理是有意义的。