There's a gotcha: If you're using "STDOUT" as the 'file' parameter,
easy_init() creates a Screen appender, not a File appender -- hence you
can't call file_switch() on it.

I'd recommend using a standard l4p init file (or string) to define
exactly what kind of appender you want (File in this case).

-- Mike

Mike Schilli
m...@perlmeister.com

On Mon, 23 Mar 2009, Ronald Fischer wrote:

> I finally found the time to implement the solution for switching logfiles at 
> run-time
> (see my posting "Re: Appender::File and Layout question" from March 6), but 
> now
> I am facing a new problem: Perl (ActivePerl 5.8 on Windows) crashes when I 
> try to
> switch the file.
>
> Here is the example code:
>
>   Log::Log4perl->easy_init(
>      {level  =>  $log_level,
>       file   =>  'STDOUT',
>       layout =>  '%.1p %d{HH:mm} %M(%L) %m%n'
>      },
>      {level  =>  $log_level,
>       file   => ">main.log",
>       layout => '%.1p %d{dd.MM. HH:mm:ss (EEE)} %M(%L) %m%n'
>      }
>      {level  =>  $log_level,
>       file   =>  '>dummy.log',
>       layout =>  '%.1p %d{HH:mm} %M(%L) %m%n',
>       name => 'requestlogger'
>      },
>    );
>
> ...
>
>  # Switch 'requestlogger' to new file
>  
> Log::Log4perl->appender_by_name('requestlogger')->file_switch('request_specific.log');
>
> At this point,  Perl complains:
>
>   "Can't call method "file_switch" on an undefined value"
>
> If I change the line so that it uses the default appender name,
>
>  
> Log::Log4perl->appender_by_name('app002')->file_switch('request_specific.log');
>
> it works. It seems that easy_init does not use the "name" parameter. Is this 
> a bug in easy_init,
> or is it supposed to work that way?
>
> Ronald
>
>
> --
> Ronald Fischer <rona...@eml.cc>
> +  If a packet hits a pocket on a socket on a port,
> +  and the bus is interrupted and the interrupt's not caught,
> +  then the socket packet pocket has an error to report.
> +             (cited after Peter van der Linden)
>
>
> ------------------------------------------------------------------------------
> Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are
> powering Web 2.0 with engaging, cross-platform capabilities. Quickly and
> easily build your RIAs with Flex Builder, the Eclipse(TM)based development
> software that enables intelligent coding and step-through debugging.
> Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com
> _______________________________________________
> log4perl-devel mailing list
> log4perl-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/log4perl-devel
>

------------------------------------------------------------------------------
Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are
powering Web 2.0 with engaging, cross-platform capabilities. Quickly and
easily build your RIAs with Flex Builder, the Eclipse(TM)based development
software that enables intelligent coding and step-through debugging.
Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com
_______________________________________________
log4perl-devel mailing list
log4perl-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/log4perl-devel

Reply via email to