use Moo;
use Scalar::Util qw(weaken);
-has format => ( is => 'ro', required => 1, default => sub { '[%l %r] %s' } );
+has format => ( is => 'ro', required => 1, default => sub { '%l: %s' } );
has level_names => ( is => 'ro', required => 1 );
has min_level => ( is => 'ro', required => 1 );
-has max_level => ( is => 'ro' );
+has max_level => ( is => 'ro', required => 1, deafult => sub { 'info' } );
has _level_active => ( is => 'lazy' );
sub BUILD {
sub _create_format_lookup {
my ($self, $level, $metadata, $content) = @_;
+ my $method = $metadata->{method};
+
+ $method = '(none)' unless defined $method;
+
return {
'%' => '%', t => $self->_render_time($metadata->{timestamp}),
r => $self->_render_remote($metadata->{object_remote}),
- s => $self->_render_log(@$content), l => $level, p => $metadata->{package},
+ s => $self->_render_log(@$content), l => $level,
+ c => $metadata->{controller}, p => $metadata->{package}, m => $method,
+ f => $metadata->{filename}, i => $metadata->{line},
+ h => $metadata->{hostname}, P => $metadata->{pid},
};
}
my ($self, $name, $data) = @_;
my $val = $data->{$name};
return $val if defined $val;
- return '';
+ return '(undefined)';
}
sub _render_time {
my $var_table = $self->_create_format_lookup($level, $metadata, [@content]);
my $template = $self->format;
- $template =~ s/%([\w])/$self->_get_format_var_value($1, $var_table)/ge;
+ $template =~ s/%([\w%])/$self->_get_format_var_value($1, $var_table)/ge;
chomp($template);
$template =~ s/\n/\n /g;