![我可以直接 syslog、syslog_ng 将某个进程的专用日志数据写入单独的日志文件吗?](https://linux22.com/image/544783/%E6%88%91%E5%8F%AF%E4%BB%A5%E7%9B%B4%E6%8E%A5%20syslog%E3%80%81syslog_ng%20%E5%B0%86%E6%9F%90%E4%B8%AA%E8%BF%9B%E7%A8%8B%E7%9A%84%E4%B8%93%E7%94%A8%E6%97%A5%E5%BF%97%E6%95%B0%E6%8D%AE%E5%86%99%E5%85%A5%E5%8D%95%E7%8B%AC%E7%9A%84%E6%97%A5%E5%BF%97%E6%96%87%E4%BB%B6%E5%90%97%EF%BC%9F.png)
我是一名开发人员,正在考虑在我的应用程序中实现一些日志记录。出于多种原因,我正在考虑使用 syslog 接口。但是,我不知道是否可以将我的特定应用程序配置为拥有自己的日志文件。
在我看来,你实际上无法做到这一点。这是更集中的日志记录。因此,像 apache 这样的服务器会编写自己的日志记录器。
是这样吗?还有什么其他选择?
答案1
如果使用 syslog,应用程序无法决定如何处理其日志消息。该决定由 syslog 守护程序的配置做出。
您可以使用 syslog 以多种方式控制系统上的日志目的地:
您的应用程序可以设置为登录特定设施。有一些系统级设施,例如kernel
和daemon
,以及八个保留供本地使用设施:local0
通过local7
。您可以将其中一个设施硬编码到您的应用程序中,也可以通过配置选项使其可选。
即使是最基本的 syslog 守护进程也可以配置为将不同的功能记录到不同的文件中。
另一种选择是,还可以配置更现代的 syslog 守护程序(例如 syslog-ng 和 rsyslog)来扫描消息并根据消息中的标签记录到不同的目标。许多应用程序通常会在[foo]
其 syslog 消息开头放置一个标签。
请注意,基于消息标签的过滤通常性能较差,例如:日志吞吐量低于仅根据设施进行过滤。对于高容量系统日志服务器,这可能会成为瓶颈。
答案2
我使用 syslog-ng,我相信它可以用于为程序创建单独的并行日志文件,但我认为这可能并不理想,因为它需要修改每个程序的 syslog-ng 配置文件。请查看您当地的手册页。:)