【问题标题】:Application logs in database or file数据库或文件中的应用程序日志
【发布时间】:2015-05-14 22:11:09
【问题描述】:

我想为我的应用程序制作一个详细的记录器,因为它可能变得非常复杂并且必须保存很多不同的东西我想知道在哪里最好将它保存在数据库中(如果数据库是哪种数据库更适合这种操作)或文件(如果文件是哪种格式:文本、csv、json、xml)。我首先想到的当然是文件,因为在数据库中我看到了很多问题,但我也想成为能够显示这些日志,因此使用数据库更容易。

【问题讨论】:

    标签: php database file logging


    【解决方案1】:

    我正在构建 HIPPA 合规性日志,这是我的粗略实现(尚未完成)。

    文件 VS。数据库
    我使用数据库表来存储最近 3 个月的数据。每天晚上,一个 cron 将运行并将较旧的数据(过去 3 个月的数据)推送到压缩文件中。我还没有写这个脚本,但应该不难。这样可以搜索、过滤过去 3 个月的数据等。但数据库不会被日志条目淹没。

    数据库偏好
    我正在使用 MSSQL,因为我别无选择。我通常更喜欢 MySQL,因为它有更好的寻呼机优化。如果您进行的搜索和过滤量超过了极少量,或者如果您担心性能,您可能需要考虑使用 apache solr 中间人。我不是数据库专家,所以我不能给你更多。

    表结构
    我的表是 5 列。 Date、Operation(创建、更新、删除)、Object(患者、约会、医生)、ObjectID 和 Diff(前后值的序列化数组,为了节省空间,仅更改值没有空值或未更改值)。

    总结
    要考虑的最重要的部分是:您是否需要人们能够定期访问和过滤/搜索数据?如果是,请考虑为最近的历史或最重要的数据建立一个数据库。 如果没有文件可能是更好的选择。

    我的混合解决方案也值得考虑。我会将文件推送到 amz 文件服务器,这样它就不会占用我的网络服务器空间。

    【讨论】:

      【解决方案2】:

      您可以使用一些现有的库(例如 log4php)来创建详细信息和复杂记录器,因为与您为自己设计自定义相比,作为性能的一部分,它已经过全面测试,并且还可以节省开发时间,我个人很少使用来自 php 和 dotnet 的库,可满足我们在某些金融和医疗领域项目中的复杂记录器需求

      这里我建议如果你需要从 php 做然后使用这个

      https://logging.apache.org/log4php/

      【讨论】:

        【解决方案3】:

        我认为正确的答案实际上是:两者都不是。 文件或数据库都没有为您提供适当的搜索、过滤功能,您在查看日志时需要这样做。我整天都在处理日志(请参阅http://sematext.com/logsene 了解原因),我会按如下方式解决这个问题:

        1. 记录到文件
        2. 使用轻量级日志传送器(例如 Logagent 或 Filebeat)
        3. 将日志索引到您自己的 Elasticsearch 集群(如果您不介意管理和学习)或云日志管理服务之一(如果您不想处理 Elasticsearch 管理、扩展等。--Logsene , Loggly, Logentries...)

        【讨论】:

          猜你喜欢
          • 2016-07-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-08-24
          • 1970-01-01
          • 1970-01-01
          • 2020-03-04
          相关资源
          最近更新 更多