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 |