database - 将日志消息存储在数据库表中而不是文件中是好是坏?

标签 database logging web language-agnostic

我说的是人类可读的文本记录,比如来自 Web 应用程序的错误消息。

人们通常将这些存储在数据库中吗?使用数据库表而不是文件有什么优势吗?或者,如果不是,为什么这是一个特别糟糕的主意?

最佳答案

数据库

优点:

  • 更容易通过日志搜索
    • 巧妙的查询、分组和限制,例如日期
    • 检索特定类型、日志级别或包含特定模式的日志消息
    • 在寻找特定事物时过滤掉不需要的噪音
  • 如果您正在创建某种用户界面,则更易于以良好的方式进行管理

一些缺点:

  • 用可能不是很有用的东西污染你的数据库,这取决于你的应用
  • 可以帮助加快数据库的增长,这在某些情况下可能会很烦人
  • 您需要访问数据库(这可能需要书面工作或只是需要时间),或者在上面编写一个 UI

文本文件

主要优势

  • 非常简单、重量轻、易于实现
  • 不再需要时易于清理;不再浪费磁盘空间
  • 使用 Splunk 或 Logstash 等工具易于扫描(从而为您提供漂亮的 UI)

缺点

  • 难以浏览和查询(取决于您的日志记录语句、文件结构等)

记录到数据库和记录到文件没有本质上的对错。这完全取决于您的需求。仔细考虑您的需求,然后再决定。调试时记录到数据库非常方便,但从长远来看,这可能需要您、您的团队或您的应用程序更多。

关于database - 将日志消息存储在数据库表中而不是文件中是好是坏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35276252/

相关文章:

mysql - 当我将数据从 servlet 存储到 mysql 数据库字符(如 "<")时, ">"被存储为 unicode 格式(如 u003c )而不是实际符号

database - PostgreSQL:有没有办法克隆一行数据以便用测试数据填充表?

java - weblogic log4j.xml 更改记录器的 "level value"(即时)

android - 读取通过 slf4android 记录的文件?

javascript - 使用 PhantomJS 下载动态网页内容时遇到问题

c# - Response.Redirect 给出 HttpException 异常

javascript - 当加载一个 javascript 库时,另一个停止工作

mySQL-如何使用 INNER JOIN 显示所有联系人及其状态

java - 未为 Websphere Application Server 8 上发布的 Web 服务生成日志

java - Connection.setAutoCommit(false); 有什么用?什么时候使用Oracle数据库?