On Mon, 5 Nov 2007, Strahan, Bob wrote:

> Looks like the syncer appender has a set of additional module
> dependencies we don't have setup yet in our environment.. I'll try it
> out when I get a change to get things set up.

Actually, I was referring to the 'syswrite' option, which is often the
easiest way to get non-interleaving log messages without further
synchronization.

-- Mike

Mike Schilli
[EMAIL PROTECTED]

>
>
>
>
> -----Original Message-----
> From: Mike Schilli [mailto:[EMAIL PROTECTED]
> Sent: Sunday, November 04, 2007 3:55 PM
> To: Strahan, Bob
> Cc: Mike Schilli; log4perl-devel@lists.sourceforge.net
> Subject: RE: [log4perl-devel] log4perl causing perl process to die (fwd)
>
> On Sun, 4 Nov 2007, Strahan, Bob wrote:
>
> > We do use the 'close_after_write' option... As I mentioned, there are
> > multiple concurrent processes continually being spawned by the
> > service, each using log4perl to log to the same logfile.  So we
> > figured we needed to use File::Locked along with close_after_write to
> > ensure each process got an exclusive lock on the logfile before
> > writing to it.
>
> I see -- the recommended ways of synchronizing access to an appender are
> listed in the Log4perl FAQ:
>
>     http://log4perl.sourceforge.net/d/Log/Log4perl/FAQ.html#23804
>
> I'm not sure how well they work on Windows, though, but give the
> 'syswrite' option a try, that should be the easiest.
>
> -- Mike
>
> Mike Schilli
> [EMAIL PROTECTED]
>
> > Let me know if there is a better (more efficient) way to handle
> > multiple concurrent processes logging to the same file e.g. Would
> > using socket appenders to route log messages to single log server
> > process which handles file i/o from one process be a better option?
> >
> >
> > > Which version of Windows are you running by the way? On regular XP, it
> > > seems to work as expected.
> >
> > Windows 2003 64-bit server..  I haven't tried it on other flavors of 
> > Windows.
> >
> >
> > For now I have worked around the problem by inserting the open() call into 
> > a retry loop..
> >     #open $fh, "$self->{mode}$self->{filename}"
> >     #    or die "Cannot write to '$self->{filename}': $!";
> >     while (1) {
> >        last if open $fh, "$self->{mode}$self->{filename}" ;
> >     }
> >
> >
> >
> >
> >
> >
> >
> >
> > -----Original Message-----
> > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Mike Schilli
> > Sent: Saturday, November 03, 2007 6:32 PM
> > To: Mike Schilli
> > Cc: log4perl-devel@lists.sourceforge.net
> > Subject: Re: [log4perl-devel] log4perl causing perl process to die (fwd)
> >
> > On Fri, 2 Nov 2007, Bob Strahan wrote:
> >
> > > However, it seems that if certain filesystem operations are
> > > performed on the logfile it can cause the logger to execute die(),
> > > causing my service to die, with the following error
> > >
> > > Cannot write to 'D:/Program Files (x86)/My App/logs/logfile.txt':
> > > Permission denied at D:\Program Files (x86)\My
> > > App\lib\perllibs\lib/Log/Dispatch/File.pm line 86.
> >
> > Hmm, this is Log::Dispatch::File's _open_file() function complaining
> > that an open() failed. Does your service open a files after it's been
> > running for a while? Typically, Log::Dispatch::File(::Locked) opens the
> > file only once unless 'close_after_write' is given.
> >
> > Which version of Windows are you running by the way? On regular XP, it
> > seems to work as expected.
> >
> > -- Mike
> >
> > Mike Schilli
> > [EMAIL PROTECTED]
> >
> > > I am using log4perl in a Win32 service that needs to run forever..  
> > > However, I have encountered a situation where the logger call is 
> > > executing a die() and causing my service to die...
> > >
> > >
> > > The service spawns multiple child processes which run concurrently but 
> > > all log to the same logfile.. We're using File::Locked to avoid 
> > > contention..  Extract from our logger config below..
> > >
> > > "log4perl.appender.myapp" => "Log::Dispatch::File::Locked",
> > > "log4perl.appender.myapp.filename" => "D:/Program Files (x86)/My 
> > > App/logs/logfile.txt",
> > > "log4perl.appender.myapp.mode" => "append",
> > > "log4perl.appender.myapp.close_after_write" => "true",
> > > "log4perl.appender.myapp.permissions" => "0660",
> > > Etc..
> > >
> > >
> >
> > > I can reproduce the problem sporadically by simply opening the logfile in 
> > > Wordpad..
> > > I can reproduce it reliably by repeatedly copying the logfile using test 
> > > script below
> > >
> > > #!perl -w
> > > use File::Copy ;
> > > while (1) {
> > >    copy ("D:/Program Files (x86)/My App/logs/logfile.txt", "D:/Program 
> > > Files (x86)/My App/logs/logfileCOPY.txt") ;
> > >    print "." ;
> > > }
> > >
> > >
> > > Any suggestions on how to defend against users copying or opening the 
> > > logfile?   We should block and retry until open() suceeds, rather than 
> > > die(), I think.
> > >
> > > Please let me know if you can help with a patch, workaround, or 
> > > suggestion.
> > >
> > > Regards
> > >
> > >
> > >
> > > Bob Strahan
> > > HP Software, R&D
> > >
> > > 703.579.1929 office | 702.967.5228 mobile | 702.579.1929 fax | [EMAIL 
> > > PROTECTED]<mailto:[EMAIL PROTECTED]>
> > > 10700 Parkridge Blvd. #500 | Reston | VA 20191
> > >
> > >
> > > -------------------------------------------------------------------------
> > > This SF.net email is sponsored by: Splunk Inc.
> > > Still grepping through log files to find problems?  Stop.
> > > Now Search log events and configuration files using AJAX and a browser.
> > > Download your FREE copy of Splunk now >> http://get.splunk.com/
> > > _______________________________________________
> > > log4perl-devel mailing list
> > > log4perl-devel@lists.sourceforge.net
> > > https://lists.sourceforge.net/lists/listinfo/log4perl-devel
> > >
> >
> > -------------------------------------------------------------------------
> > This SF.net email is sponsored by: Splunk Inc.
> > Still grepping through log files to find problems?  Stop.
> > Now Search log events and configuration files using AJAX and a browser.
> > Download your FREE copy of Splunk now >> http://get.splunk.com/
> > _______________________________________________
> > log4perl-devel mailing list
> > log4perl-devel@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/log4perl-devel
> >
>

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
log4perl-devel mailing list
log4perl-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/log4perl-devel

Reply via email to