diff --git a/lib/Mojo/Log.pm b/lib/Mojo/Log.pm index 0a05c40d1d..9bf47865ef 100644 --- a/lib/Mojo/Log.pm +++ b/lib/Mojo/Log.pm @@ -99,7 +99,7 @@ sub _default { my ($s, $m, $h, $day, $month, $year) = localtime $time; $time = sprintf '%04d-%02d-%02d %02d:%02d:%08.5f', $year + 1900, $month + 1, $day, $h, $m, "$s." . ((split /\./, $time)[1] // 0); - return "[$time] [$$] [$level] " . join(' ', @_) . "\n"; + return "[$time] [$$] [$level] " . join(' ', map {defined $_ ? $_ : 'undef'} @_) . "\n"; } sub _log { @@ -123,7 +123,7 @@ sub _message { sub _short { my ($time, $level) = (shift, shift); my ($magic, $short) = ("<$MAGIC{$level}>", substr($level, 0, 1)); - return "${magic}[$$] [$short] " . join(' ', @_) . "\n"; + return "${magic}[$$] [$short] " . join(' ', map {defined $_ ? $_ : 'undef'} @_) . "\n"; } package Mojo::Log::_Capture; diff --git a/t/mojo/log.t b/t/mojo/log.t index 5b10430052..d1fed02e6a 100644 --- a/t/mojo/log.t +++ b/t/mojo/log.t @@ -36,12 +36,14 @@ subtest 'Logging to STDERR' => sub { $log->fatal('I ♥ Mojolicious'); $log->debug('Works too'); $log->debug(sub { return 'And this', 'too' }); + $log->info(undef, 'works'); } my $content = decode 'UTF-8', $buffer; like $content, qr/\[.*\] \[error\] Just works\n/, 'right error message'; like $content, qr/\[.*\] \[fatal\] I ♥ Mojolicious\n/, 'right fatal message'; like $content, qr/\[.*\] \[debug\] Works too\n/, 'right debug message'; like $content, qr/\[.*\] \[debug\] And this too\n/, 'right debug message'; + like $content, qr/\[.*\] \[info\] undef works\n/, 'right debug message'; }; subtest 'Formatting' => sub { @@ -73,6 +75,7 @@ subtest 'Short log messages (systemd)' => sub { like $log->format->(time, 'error', 'Test 123'), qr/^<3>\[\d+\] \[e\] Test 123\n$/, 'right format'; like $log->format->(time, 'fatal', 'Test 123'), qr/^<2>\[\d+\] \[f\] Test 123\n$/, 'right format'; like $log->format->(time, 'debug', 'Test', '1', '2', '3'), qr/^<6>\[\d+\] \[d\] Test 1 2 3\n$/, 'right format'; + like $log->format->(time, 'debug', undef, 'works'), qr/^<6>\[\d+\] \[d\] undef works\n$/, 'right format'; }; subtest 'Colorized log messages' => sub {