Как настроить 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 для большей информации о потенциальных ловушках при передаче восьмеричных значений.