On Fri, 6 Mar 2009, Ronald Fischer wrote:
> I understand how to do it in a config file, but I don't see how to do
> it in my code. Probably it is not possible at all with easy_init
> (which I would like to continue to use)
easy_init() and init() are using the same underlying internal Log4perl
API functions, so it doesn't matter which one you're using.
> # This is my current initialization
> Log::Log4perl->easy_init(
> # ... Details left out
> );
> # Now define the request-specific logger
>
> use Log::Log4perl::Layout;
> use Log::Log4perl::Level;
> my $req_logger= Log::Log4perl->get_logger(???);
Since you don't want categories, use the root logger here:
my $req_logger= Log::Log4perl->get_logger("");
> my $req_appender = Log::Log4perl::Appender->new(
> "Log::Log4perl::Appender::File",
> name => "???",
You can omit the name.
> mode => 'clobber',
> utf8 => 1,
> create_at_logtime => 1
> filename => \&get_current_logfile); # ???
You don't want to pass a reference here, you want to call the function
right here:
filename => get_current_logfile() );
and define it like
sub get_current_logfile {
return "logfile.dat";
}
or whatever fance logic you want it to use, but it needs to return the
name of the file.
So, a working version of what you want would look something like this:
use strict;
use Log::Log4perl qw(:easy);
# This is my current initialization
Log::Log4perl->easy_init($DEBUG);
use Log::Log4perl::Layout;
use Log::Log4perl::Level;
my $req_logger= Log::Log4perl->get_logger("");
my $req_appender = Log::Log4perl::Appender->new(
"Log::Log4perl::Appender::File",
mode => 'clobber',
utf8 => 1,
create_at_logtime => 1,
filename => get_current_logfile());
$req_appender->layout(Log::Log4perl::Layout::SimpleLayout->new());
$req_logger->add_appender($req_appender);
DEBUG "waah";
###########################################
sub get_current_logfile {
###########################################
return "logfile.dat";
}
One more thing: A logger (the root logger in your case) can only have one
level. So if you initialize with easy_init($DEBUG), that's the level it's
gonna have. If you want different levels for the file appender you're
setting up manually, use appender thresholds or a filter.
Hope that helps!
-- Mike
Mike Schilli
[email protected]
------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
log4perl-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/log4perl-devel