我们使用 local2 的设施代码从 perls 脚本发送大量 syslog 消息。这在 Red Hat 上非常有效,但在 SunOS 上,消息似乎没有发送到 local2。例如,这是一个最小的脚本
#!/usr/bin/perl
use strict;
use warnings;
use Sys::Syslog qw(:DEFAULT :standard :macros);
openlog("", 'ndelay', 'local2');
syslog('info', "ItWorks");
`logger -p local2.info "ItWorks"`;
在这个脚本中,我通过 Syslog perl 模块和 logger 命令发送日志。只有第二条消息似乎会发送到 local2。我认为它不会发送到 local2 的原因是我们在 syslog.conf 文件中设置了一个规则来转发 local2,并且只有第二条消息被转发。当我查看日志文件中的 2 条消息时,它们看起来略有不同,我不确定这是否重要
Sep 2 11:41:22 ssapp7001v <150>Sep 2 11:41:22 d336599: ItWorks
Sep 2 11:41:22 ssapp7001v d336599: [ID 702911 local2.info] ItWorks
我还应该补充一点,我在 perl 代码中尝试了各种组合,使用 local2 作为字符串,作为常量,在 openlog 调用和/或 syslog 调用中指定它。这些似乎都没有任何区别。我可以只使用反引号并调用记录器,但这是我最后的手段,因为我必须处理可能对命令行不友好的字符以及为每条日志消息打开一个新进程的性能损失。不幸的是,在此服务器上进行任何配置更改是不可能的。