Мы отправляем много сообщений системного журнала из нашего скрипта perls, используя код объекта local2. Это очень хорошо работает в 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"`;
В этом скрипте я отправляю журнал через perl-модуль Syslog, а также через команду 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. Ничто из этого, кажется, не имеет никакого значения. Я мог бы просто использовать обратные кавычки и регистратор вызовов, но это мое последнее средство, потому что тогда мне приходится иметь дело с символами, которые могут быть неудобными для командной строки, а также с падением производительности при открытии нового процесса для каждого сообщения журнала. К сожалению, о каких-либо изменениях конфигурации на этом сервере не может быть и речи.