我只是想知道为什么典型的 Linux 系统中有这么多日志文件?拥有一个用于日志记录的系统 api 函数和一个用于保存所有应用程序的所有日志条目的统一表不是更好的主意吗?
ech*_*hox 15
使用简单的文本文件的优点是不需要任何特定于数据库的工具来获取日志条目。
如果你愿意,你可以用 grep 分析它们,你可以用你最喜欢的分页器打开它们,你可以用你最喜欢的脚本语言(如 Perl、Python 等)处理它们,而不需要任何额外的库。
在 Unix 系统上,您已经拥有某种“系统日志 API”。它被称为系统日志。Syslog 并不是真正的 API,但它是记录消息的标准。该名称代表网络协议及其背后的库和守护程序。
大多数系统的默认配置是一个监听本地消息的 syslog 守护进程。
守护进程接受消息并进行日志记录。对于所有类型的平台,syslog 守护进程有几种不同的实现,并且还可以将您的消息记录到数据库中。
它是由你决定。
Gil*_*il' 10
我只是想知道为什么典型的 Linux 系统中有这么多日志文件?
不同的日志文件包含不同的信息(尽管通常会有一些重复)。它们通常具有不同的特性:不同的轮换和保留策略、不同的权限等。syslog 守护进程负责编写它们;您可以在/etc/syslog.conf
或 中查看其设置/etc/syslog-ng.conf
。
拥有一个用于日志记录的系统 api 函数不是更好的主意吗
这是一个好主意。我们称之为syslog。它的工作是将日志条目发送到 syslog 守护进程。
和一个统一表来保存所有应用程序的所有日志条目?
现在这是一整罐蠕虫。您似乎假设存在数据库引擎,可能是关系数据库,可能是您可以在 SQL 中查询的数据库。但是 Unix 比 SQL 更古老,它没有采用 SQL 作为标准组件是有充分理由的。在 Unix 下,数据库是文件系统。它不是关系数据库,它是一个简单的数据库。它的条目不是行,而是简单的文件,最好是文本,最好是简单的格式。例如,日志文件是文本文件,每行一个条目,包含日期、机器名称、原始程序和条目文本。使用关系数据库有很多缺点:
cat
,grep
,less
对SQL查询。和文件权限,好吧,我不知道您将如何在典型的关系数据库中处理此问题。