Как настроить log4perl.conf и сценарий perl, чтобы установить правильные разрешения для файлов журнала?

Я использую Log::Log4Perl для регистрации для моих сценариев Perl. Все работает отлично, кроме одной вещи; У меня есть несколько общих модулей, которые используются разными скриптами (и запускаются разными пользователями). Я хочу, чтобы эти файлы журнала имели -rw-rw-rw- разрешения, но следующий код, который я использую повсюду, похоже, не помогает:

В моем /etc/log4perl.conf

# Logger for /usr/local/bin/script.pl
log4perl.logger.SCRIPT=DEBUG, SCRIPT_LOG

log4perl.appender.SCRIPT_LOG           = Log::Dispatch::FileRotate
log4perl.appender.SCRIPT_LOG.filename  = /var/log/perl/script.log
log4perl.appender.SCRIPT_LOG.mode      = append
log4perl.appender.SCRIPT_LOG.autoflush = 1
log4perl.appender.SCRIPT_LOG.size      = 2097152
log4perl.appender.SCRIPT_LOG.max       = 5
log4perl.appender.SCRIPT_LOG.layout    = Log::Log4perl::Layout::PatternLayout

В моем Perl-скрипте script.pl

use Log::Log4perl qw(get_logger :levels);

sub _log4perl {

   umask 0000;
   Log::Log4perl->init("/etc/log4perl.conf");
   my $log4perl = get_logger("SCRIPT");    

   return $log4perl;
}

Эта конфигурация и соответствующий код создают файл script.log с разрешения -rw-r--r--, но я хочу -rw-rw-rw-, Что-то ужасно не так с кодом? Пожалуйста, прочтите также. Может ли файловое приложение создавать файлы с разными разрешениями?

1 ответ

Вы можете установить разрешение: http://metacpan.org/pod/Log%3A%3ADispatch%3A%3AFile

log4perl.appender.SCRIPT_LOG.permission = 0644

разрешения ($)

Если файл еще не существует, разрешения, с которыми он должен быть создан. Необязательный. Переданный аргумент должен быть действительным восьмеричным значением, таким как 0600, или константами, доступными из Fcntl, такими как S_IRUSR|S_IWUSR.

Смотрите "chmod" в perlfunc для большей информации о потенциальных ловушках при передаче восьмеричных значений.

Другие вопросы по тегам