in reply to Will Log4perl work threaded?

Having a quick peek at the source for Log::Log4perl::Appender::File it would appear that it will not be thread-safe due to its lack of file locking. But if you're using the Log::Log4perl::Appender::DBI layer you should be fine as DBI is thread-safe (in theory, at least).

As for a solution, I'd say just override the specific logging methods e.g

sub Log::Log4perl::Appender::File::log { my($self, %params) = @_; my $fh = $self->{fh}; flock( $fh => LOCK_EX ); print $fh $params{message}; flock( $fh => LOCK_UN ); if ($self->{autoflush}) { my $oldfh = select $self->{fh}; $| = 1; select $oldfh; } }
Or perhaps create just a wrapper function/method that does the flocking before and after the call to the logging function.

HTH

_________
broquaint