Logger: Move log output to parentmost Logger
This makes it possible for tests to redirect log output so that they can ensure that certain log messages are generated.
This commit is contained in:
parent
f4248d0617
commit
43ea691e0c
1 changed files with 5 additions and 6 deletions
11
ddclient.in
11
ddclient.in
|
@ -2356,11 +2356,6 @@ sub ynu {
|
|||
return bless({ctx => $ctx, parent => $parent, _in_logger => 0}, $class);
|
||||
}
|
||||
|
||||
sub _ctxs {
|
||||
my ($self) = @_;
|
||||
return ($self->{parent} ? $self->{parent}->_ctxs() : (), @{$self->{ctx}});
|
||||
}
|
||||
|
||||
# Takes the following keyword arguments:
|
||||
# * `msg` (string): The message to log.
|
||||
# * `label` (string): Severity ('DEBUG', 'WARNING', etc.) to prefix each line with.
|
||||
|
@ -2381,12 +2376,16 @@ sub ynu {
|
|||
|
||||
sub _log {
|
||||
my ($self, $args) = @_;
|
||||
# A new arrayref is created instead of unshifting into @{$args->{ctx}} to avoid mutating
|
||||
# the caller's arrayref (in case it is reused in a future call).
|
||||
$args->{ctx} = [@{$self->{ctx}}, @{$args->{ctx}}];
|
||||
return $self->{parent}->_log($args) if defined($self->{parent});
|
||||
my $buffer = $args->{msg} // '';
|
||||
chomp($buffer);
|
||||
if (!$args->{raw}) {
|
||||
$args->{label} //= '';
|
||||
my $prefix = $args->{label} ne '' ? sprintf("%-8s ", $args->{label} . ':') : '';
|
||||
$prefix .= "[$_]" for $self->_ctxs(), @{$args->{ctx}};
|
||||
$prefix .= "[$_]" for @{$args->{ctx}};
|
||||
$prefix .= '> ' if $prefix;
|
||||
$buffer = "$prefix$buffer";
|
||||
$prefix =~ s/> $/ /;
|
||||
|
|
Loading…
Reference in a new issue