I'm planning to use Log4Perl in my modules for logging.
My code structure goes like this
I have Start.PL which validates some parameters. I have several modules (PM) file which are interlinked (used across these PL and PM files)
I have a Logger.PM in which I have a method InitiateLogger() which creates the log object
$log = Log::Log4perl->get_logger("MyLog");
I call this method Logger::InitiateLogger();
in the Start.pl
Here are my questions
Would be nice if someone clarifies me these points.
You may declare $log
as a package variable with our
and use the instance wherever you need, using its verbose fully qualified name:
Package::Name::$log->info( 'test' );
In place of fully qualified name you can use an alias after a typeglob assignment:
#!/usr/bin/env perl
package Package::Name;
use strict;
use Log::Log4perl qw(:easy);
Log::Log4perl->easy_init( $ERROR );
our $log = get_logger();
package main;
use v5.12;
use strict;
*log = $Package::Name::log;
say $log;
which yields:
Log::Log4perl::Logger=HASH(0x230ff20)
In your case, the fully qualified name of logger object in Start.pl is $main::log
.
You can make an alias in every package where the logger is needed with *log = $main::log
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With