|
From: Kevin M. G. <cp...@go...> - 2007-02-28 17:18:37
|
Martin Evans wrote:
> I think Log::Dispatch::FileRotate is unusable in a multi-process
> environment if the processes run as different uids.
That's certainly not impossible. In a situation like that, I'd
seriously think about talking to a logging daemon like syslog,
syslog-ng, or even something like Spread. Syslog is *really* flexible,
and you can use Log::Dispatch::Syslog.
But one more suggestion that might help, did you try doing "chmod g+s"
on the directory that holds the log files? Then all files created in
that directory will belong to the group-owner of the directory. This
seems to work for me:
#here's the script:
kgoess@desoto:~ $ cat /tmp/test.pl
use Log::Log4perl;
my $testfile = '/tmp/testlog/foo.log';
Log::Log4perl->init(\<<EOT);
log4perl.category = INFO, FileAppndr1
log4perl.appender.FileAppndr1 = Log::Dispatch::FileRotate
log4perl.appender.FileAppndr1.filename = $testfile
log4perl.appender.FileAppndr1.mode = append
log4perl.appender.FileAppndr1.layout = Log::Log4perl::Layout::SimpleLayout
log4perl.appender.FileAppndr1.size = 1
log4perl.appender.FileAppndr1.max = 6
EOT
my $log = Log::Log4perl::get_logger("");
for (1..1000){
$log->info("Shu-wa-chi!"x100);
}
#running it produces these files, note the ownership
#and permissions on the directory are g+w and group is me2
kgoess@desoto:~ $ perl /tmp/test.pl
kgoess@desoto:~/temp $ ls -lFtra /tmp/testlog/
total 19
drwxrwxrwt 17 root root 3072 Feb 28 09:12 ../
-rw-rw-r-- 1 kgoess me2 1108 Feb 28 09:12 foo.log.6
-rw-rw-r-- 1 kgoess me2 1108 Feb 28 09:12 foo.log.5
-rw-rw-r-- 1 kgoess me2 1108 Feb 28 09:12 foo.log.4
-rw-rw-r-- 1 kgoess me2 1108 Feb 28 09:12 foo.log.3
-rw-rw-r-- 1 kgoess me2 1108 Feb 28 09:12 foo.log.2
-rw-rw-r-- 1 kgoess me2 1108 Feb 28 09:12 foo.log.1
-rw-rw-r-- 1 kgoess me2 1108 Feb 28 09:12 foo.log
drwxrwsr-x 2 kgoess me2 1024 Feb 28 09:12 ./
#be a different user
kgoess@desoto:~/temp $ sudo su - me2
Password:
[me2@desoto ~]$
#and run it as me2
[me2@desoto ~]$ perl /tmp/test.pl
[me2@desoto ~]$ ls -lFtra /tmp/testlog/
total 19
drwxrwxrwt 17 root root 3072 Feb 28 09:12 ../
-rw-rw-r-- 1 me2 me2 1108 Feb 28 09:15 foo.log.6
-rw-rw-r-- 1 me2 me2 1108 Feb 28 09:15 foo.log.5
-rw-rw-r-- 1 me2 me2 1108 Feb 28 09:15 foo.log.4
-rw-rw-r-- 1 me2 me2 1108 Feb 28 09:15 foo.log.3
-rw-rw-r-- 1 me2 me2 1108 Feb 28 09:15 foo.log.2
-rw-rw-r-- 1 me2 me2 1108 Feb 28 09:15 foo.log.1
-rw-rw-r-- 1 me2 me2 1108 Feb 28 09:15 foo.log
drwxrwsr-x 2 kgoess me2 1024 Feb 28 09:15 ./
The default umask on my machine is 0002, so files are group-writeable by
default.
--
Happy Trails . . .
Kevin M. Goess
|