我们正在使用本地2的设施代码从Perl脚本发送大量的syslog消息。这在Red Hat上运行得非常好,但在SunOS上,消息似乎不会进入local2。例如,以下是一个最小化的脚本。
在这个脚本中,我正在使用Syslog perl模块和logger命令发送日志。似乎只有第二个消息会被发送到local2。我认为它没有被发送到local2的原因是我们在syslog.conf文件中设置了一个规则来转发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,只有第二个消息被转发了。当我查看日志文件中的两条消息时,它们看起来略有不同,我不确定这是否重要。
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调用中指定它。但是似乎没有任何区别。我可以使用反引号并调用logger,但那是我的最后一个选择,因为我必须处理可能不符合命令行规范的字符,而且还要为每个日志消息打开一个新进程,这会影响性能。不幸的是,在这个服务器上进行任何配置更改都是不可能的。