【发布时间】:2015-05-14 22:11:09
【问题描述】:
我想为我的应用程序制作一个详细的记录器,因为它可能变得非常复杂并且必须保存很多不同的东西我想知道在哪里最好将它保存在数据库中(如果数据库是哪种数据库更适合这种操作)或文件(如果文件是哪种格式:文本、csv、json、xml)。我首先想到的当然是文件,因为在数据库中我看到了很多问题,但我也想成为能够显示这些日志,因此使用数据库更容易。
【问题讨论】:
我想为我的应用程序制作一个详细的记录器,因为它可能变得非常复杂并且必须保存很多不同的东西我想知道在哪里最好将它保存在数据库中(如果数据库是哪种数据库更适合这种操作)或文件(如果文件是哪种格式:文本、csv、json、xml)。我首先想到的当然是文件,因为在数据库中我看到了很多问题,但我也想成为能够显示这些日志,因此使用数据库更容易。
【问题讨论】:
我正在构建 HIPPA 合规性日志,这是我的粗略实现(尚未完成)。
文件 VS。数据库
我使用数据库表来存储最近 3 个月的数据。每天晚上,一个 cron 将运行并将较旧的数据(过去 3 个月的数据)推送到压缩文件中。我还没有写这个脚本,但应该不难。这样可以搜索、过滤过去 3 个月的数据等。但数据库不会被日志条目淹没。
数据库偏好
我正在使用 MSSQL,因为我别无选择。我通常更喜欢 MySQL,因为它有更好的寻呼机优化。如果您进行的搜索和过滤量超过了极少量,或者如果您担心性能,您可能需要考虑使用 apache solr 中间人。我不是数据库专家,所以我不能给你更多。
表结构
我的表是 5 列。 Date、Operation(创建、更新、删除)、Object(患者、约会、医生)、ObjectID 和 Diff(前后值的序列化数组,为了节省空间,仅更改值没有空值或未更改值)。
总结
要考虑的最重要的部分是:您是否需要人们能够定期访问和过滤/搜索数据?如果是,请考虑为最近的历史或最重要的数据建立一个数据库。
如果没有文件可能是更好的选择。
我的混合解决方案也值得考虑。我会将文件推送到 amz 文件服务器,这样它就不会占用我的网络服务器空间。
【讨论】:
您可以使用一些现有的库(例如 log4php)来创建详细信息和复杂记录器,因为与您为自己设计自定义相比,作为性能的一部分,它已经过全面测试,并且还可以节省开发时间,我个人很少使用来自 php 和 dotnet 的库,可满足我们在某些金融和医疗领域项目中的复杂记录器需求
这里我建议如果你需要从 php 做然后使用这个
【讨论】:
我认为正确的答案实际上是:两者都不是。 文件或数据库都没有为您提供适当的搜索、过滤功能,您在查看日志时需要这样做。我整天都在处理日志(请参阅http://sematext.com/logsene 了解原因),我会按如下方式解决这个问题:
【讨论】: