我可以直接 syslog、syslog_ng 将某个进程的专用日志数据写入单独的日志文件吗?

我可以直接 syslog、syslog_ng 将某个进程的专用日志数据写入单独的日志文件吗?

我是一名开发人员,正在考虑在我的应用程序中实现一些日志记录。出于多种原因,我正在考虑使用 syslog 接口。但是,我不知道是否可以将我的特定应用程序配置为拥有自己的日志文件。

在我看来,你实际上无法做到这一点。这是更集中的日志记录。因此,像 apache 这样的服务器会编写自己的日志记录器。

是这样吗?还有什么其他选择?

答案1

如果使用 syslog,应用程序无法决定如何处理其日志消息。该决定由 syslog 守护程序的配置做出。

您可以使用 syslog 以多种方式控制系统上的日志目的地:

您的应用程序可以设置为登录特定设施。有一些系统级设施,例如kerneldaemon,以及八个保留供本地使用设施:local0通过local7。您可以将其中一个设施硬编码到您的应用程序中,也可以通过配置选项使其可选。

即使是最基本的 syslog 守护进程也可以配置为将不同的功能记录到不同的文件中。

另一种选择是,还可以配置更现代的 syslog 守护程序(例如 syslog-ng 和 rsyslog)来扫描消息并根据消息中的标签记录到不同的目标。许多应用程序通常会在[foo]其 syslog 消息开头放置一个标签。

请注意,基于消息标签的过滤通常性能较差,例如:日志吞吐量低于仅根据设施进行过滤。对于高容量系统日志服务器,这可能会成为瓶颈。

答案2

我使用 syslog-ng,我相信它可以用于为程序创建单独的并行日志文件,但我认为这可能并不理想,因为它需要修改每个程序的 syslog-ng 配置文件。请查看您当地的手册页。:)

相关内容