Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Re^3: Passing the logger's object

by stevieb (Canon)
on Nov 13, 2016 at 20:42 UTC ( [id://1175841]=note: print w/replies, xml ) Need Help??


in reply to Re^2: Passing the logger's object
in thread Passing the logger's object

Not always, but mostly I do. Whether using named params:

my $obj = Module->new(log => $obj, arg1 => $arg1);

or, positional (in this case, I typically have the log obj as the first parameter):

my $obj = Module->new($log, $arg1, $arg2);

...and sometimes, I'll have the first arg as $self, then the log obj, then named params after that:

my $obj = Module->new($log, %args);

The new() method would look something like this internally in that case:

sub new { my $self = shift; my $log_obj = shift; my %args = @_; # do stuff }

You can also call the class method within your new() method, and stash it inside the object:

sub new { my $self = bless {}, shift; $self->{log} = Library->log()->child('This::Module::Name'); my $log = $self->_log()->child('new'); } sub foo { my $self = shift; my $log = $self->_log()->child('foo'); # do fooish type stuff } sub _log { return shift->{log}; }

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1175841]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others goofing around in the Monastery: (5)
As of 2024-04-23 21:24 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found