On Oct 18, 2012, at 07:58, Antti Linno wrote: > First of all, I have to apologise. Still no pastebin.
We have to apologize, too. You're asking questions about code we cannot see. This impairs our ability to provide satisfying answers. > But a general tree would be something like that. > > Main POE module, imported submodule1, imported submodule2. All 3 > modules open the same logger conf and use the same sqlite file to > append the log. Theoretically the log file could be locked, if all 3 > or even 2 modules try to write at the same time. No. As others have said, POE doesn't pre-empt. Under ordinary circumstances, we expect all three modules to call Log::Log4perl sequentially rather than concurrently. We don't expect Log::Log4perl suffer from lock contention. It's very likely that something extraordinary is happening as a result of code we cannot see. Others have already outlined the most likely reasons for the symptoms you described. I hope you understand that's the best we can do without your cooperation. > What would be the nice and tidy thing to do? Initialize logger in main > POE module and pass it to submodules? That's such a good question that Log::Log4perl already answers it: "Why Log::Log4perl->get_logger and not Log::Log4perl->new? We don't want to create a new object every time. Usually in OO-Programming, you create an object once and use the reference to it to call its methods. However, this requires that you pass around the object to all functions and the last thing we want is pollute each and every function/method we're using with a handle to the Logger: [example omitted] "Instead, if a function/method wants a reference to the logger, it just calls the Logger's static get_logger($category) method to obtain a reference to the one and only possible logger object of a certain category. That's called a singleton if you're a Gamma fan." That quote is from http://search.cpan.org/~mschilli/Log-Log4perl-1.38/lib/Log/Log4perl.pm#Initialize_via_a_configuration_file -- Rocco Caputo <rcap...@pobox.com>