You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I have created an Exception class that consumes the Throwable Moo role. The Exception class is the base class of further classes like for example XML::Exception. This is an excerpt from the Exception class
has _logger => ( is => 'lazy', isa => InstanceOf[ 'Log::Any::Proxy' ], init_arg => undef );
sub BUILD {
my ( $self ) = @_;
$self->_logger->errorf( $self->message ) if $self->has_message;
return;
}
sub _build__logger {
my ( $self ) = @_;
return Log::Any->get_logger( category => blessed( $self ) );
}
As you can see errorf() is called in the BUILD() method.
What I want is to log at the place where the exception is raised.
I dislike that although I cannot clearly state why. First it works only for Log::Log4perl. Second who is responsible for the adjustment of the "caller depth"? Is it the producer or the consumer? Do we need an amendment of the Log::Any::Adapter interface so that "caller depth" information can be passed to any adapter whether he needs it or not?
The text was updated successfully, but these errors were encountered:
I have created an Exception class that consumes the Throwable Moo role. The Exception class is the base class of further classes like for example XML::Exception. This is an excerpt from the Exception class
As you can see
errorf()
is called in theBUILD()
method.What I want is to log at the place where the exception is raised.
If my consumer is Log::Log4perl, I have to do some wrapper registration
I dislike that although I cannot clearly state why. First it works only for
Log::Log4perl
. Second who is responsible for the adjustment of the "caller depth"? Is it the producer or the consumer? Do we need an amendment of the Log::Any::Adapter interface so that "caller depth" information can be passed to any adapter whether he needs it or not?The text was updated successfully, but these errors were encountered: