登录到文本文件或数据库?


25

什么时候应该使用数据库记录日志,何时使用文本文件?
我看到默认情况下,Web服务器和Web框架(您的应用程序在内部使用)通常(总是?)将请求和错误记录到文本文件中。但是我看到围绕这些服务器和框架开发应用程序的人有时会登录数据库(甚至是应用程序的主数据库,而不是某些外部数据库)。
另外,调试日志审核日志之间可能会有区别-我已经在此站点的某处阅读了此分类。




2
可能将日志
蚊蚋

尽管您不应该记录敏感信息,但是某些系统可能会需要它,这是记录数据库的一个好案例。有时,开发人员无意间记录了敏感信息。为了防止发生这种情况,许多应用程序开发人员将只登录数据库,因此日志消息中的社会安全号等内容不会以纯文本格式存放在13台不同服务器上的文本文件中。
Greg Burghardt

Answers:


16

一般而言,登录到文本文件比登录数据库快得多。这是您需要考虑的日志记录的主要方面。

登录数据库的原因很可能是因为您要查询结果-在数据库中搜索特定的日志信息更加容易,尤其是当您记录可用于将日志条目分组在一起的上下文信息时。访问中央数据库通常比服务器上的日志文件更容易访问,因为日志文件可能是安全的并且无法访问。

理想的做法是本地登录到文件,然后再将此数据迁移到DB进行检查(如果需要)。

现在,审计完全是另一回事了。尽管在概念上与日志记录相似,但是通常需要将审计保留很​​长时间(与用于调试或跟踪的日志文件可能会一时删除)不同。审核可以显示重要信息。与正常的日志记录相比,您记录的审计信息少得多,而且记录的频率也少,因此性能不是问题。因此,可以看到将审核信息写入中央数据库的好处。


1
我见过的另一种安排是,首先将日志写入本地,然后通过某种后台作业将其推送到DB。
罗比·迪

@RobbieDee我喜欢这个主意。我有一个重复的问题:期限有限的日志文件(例如仅过去30天)是否很常见,但是随着日志被推送到数据库中(例如每周一次),然后所有日志都存储在数据库中=>日志文件起作用像仅缓冲区一样,所有读取操作都在数据库上完成?由于使用DB进行写入会延迟,因此无需担心性能,不是吗。
Al-un

9

没有一种适合所有方法的规模,而为了实现弹性,您有时可能希望使用多种方法。以您的示例为例,您可能希望将调试日志存储在文件中,并将审核日志存储在数据库中。

应用程序屑

优点:易于实施,并且对用户立即可见

缺点:信息仅在应用程序启动时持续存在

文本文件

优点:易于实施

缺点:需要确保不会发生文件锁定。日志驱动器上的磁盘空间用完时该怎么办?

事件簿

优点:易于实施

缺点:如果未正确设置,事件日志可能已满,或者由于保留策略/清除而导致旧日志丢失。

数据库

优点:易于实施

缺点:更多的数据库流量。如何记录数据库丢失或其他数据库问题?

讯息(MQ)

优点:忘却

缺点:另一层出了问题。需要设置


您可能还希望包括syslog守护程序和SNMP日志目标。
gbjbaanb

@gbjbaanb确实-有些操作系统内置了这样的功能-这当然不是详尽的清单。高可用性系统掉线时也可能发送SMS。
罗比迪

2

审核日志必须确保出于审计目的可以在更长的时间内完全跟踪操作,目的是完全证明数据库的内容合理。

在某些情况下(例如财务申请),这些日志可能必须确保遵守法律要求,例如保留(在某些国家/地区为10年)或不可更改。由于这些日志必须在应用程序级别证明数据库内容的合理性,因此通常将它们存储在数据库中,在数据库中可以控制访问以避免未经授权的更改。

其他日志(例如监视日志或安全日志)经常必须应对性能和容量限制。通常将它们写入文件,因为写入速度更快(无事务管理开销),脱机归档更容易,并且更易于与外部监视SIEM工具集成。

应当指出的是,尽管这些日志可以用来证明审计日志的可靠性(例如,没有未经授权的访问),但是它们通常具有较短的保留限制(例如,出于电信日志的执法目的,在6个月至2年之间)如果有任何限制。


1

使用db进行调试日志记录的许多原因之一是当您无权访问应用程序或Web服务器来查看事件查看器或文本文件时

在Web应用程序的上下文中,审核日志与调试日志不同,因为在某些应用程序中,您可能需要将它们显示给最终用户,以便将它们放入数据库中以便于检索。

您也可以使用数据库工具进行过滤和轻松查看。


写入服务器日志文件并不是高并发系统的唯一选择。这些日志通常被写入客户端设备,然后在出现问题时被推送以提供支持。高并发性也可能使其不适合写入单个数据库。
罗比·迪

@RobbieDee Web服务器和Web应用程序也是如此吗?因为这就是OP所要求的,我相信
Muhammad Raja
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.