1

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-。代码有什么严重错误吗?另请阅读文件附加程序可以创建具有不同权限的文件吗?

4

1 回答 1

1

您可以设置权限:http ://metacpan.org/pod/Log::Dispatch::File

log4perl.appender.SCRIPT_LOG.permission = 0644

权限 ($)

如果该文件尚不存在,则应使用创建该文件的权限。可选的。传递的参数必须是有效的八进制值,例如 0600 或 Fcntl 提供的常量,例如 S_IRUSR|S_IWUSR。

有关传递八进制值时潜在陷阱的更多信息,请参见 perlfunc 中的“chmod”。

于 2013-04-03T11:42:25.427 回答