NAME
Mojo::Log - Simple logger
SYNOPSIS
my $log = Mojo::Log->new;
my $log = Mojo::Log->new( path => '/var/log/mojo.log' , level => 'warn' );
$log ->trace( 'Doing stuff' );
$log ->debug( 'Not sure what is happening here' );
$log ->info( 'FYI: it happened again' );
$log -> warn ( 'This might be a problem' );
$log ->error( 'Garden variety error' );
$log ->fatal( 'Boom' );
|
DESCRIPTION
Mojo::Log is a simple logger for Mojo projects.
EVENTS
Mojo::Log inherits all events from Mojo::EventEmitter and can emit the following new ones.
message
$log ->on( message => sub ( $log , $level , @lines ) {...});
|
Emitted when a new message gets logged.
$log ->on( message => sub ( $log , $level , @lines ) { say "$level: " , @lines });
|
ATTRIBUTES
Mojo::Log implements the following attributes.
color
my $bool = $log ->color;
$log = $log ->color( $bool );
|
Colorize log messages with the levels warn
, error
and fatal
using Term::ANSIColor, defaults to the value of the MOJO_LOG_COLOR
environment variables. Note that this attribute is EXPERIMENTAL and might change without warning!
my $cb = $log -> format ;
$log = $log -> format ( sub {...});
|
A callback for formatting log messages.
$log -> format ( sub ( $time , $level , @lines ) { "[2018-11-08 14:20:13.77168] [28320] [info] I ♥ Mojolicious\n" });
|
handle
my $handle = $log ->handle;
$log = $log ->handle(IO::Handle->new);
|
Log filehandle used by default "message" event, defaults to opening "path" or STDERR
.
history
my $history = $log ->history;
$log = $log ->history([[ time , 'debug' , 'That went wrong' ]]);
|
The last few logged messages.
level
my $level = $log ->level;
$log = $log ->level( 'debug' );
|
Active log level, defaults to trace
. Available log levels are trace
, debug
, info
, warn
, error
and fatal
, in that order.
max_history_size
my $size = $log ->max_history_size;
$log = $log ->max_history_size(5);
|
Maximum number of logged messages to store in "history", defaults to 10
.
path
my $path = $log ->path
$log = $log ->path( '/var/log/mojo.log' );
|
Log file path used by "handle".
short
my $bool = $log ->short;
$log = $log ->short( $bool );
|
Generate short log messages without a timestamp but with journald log level prefix, suitable for systemd environments, defaults to the value of the MOJO_LOG_SHORT
environment variables.
METHODS
Mojo::Log inherits all methods from Mojo::EventEmitter and implements the following new ones.
append
$log ->append( "[2018-11-08 14:20:13.77168] [28320] [info] I ♥ Mojolicious\n" );
|
Append message to "handle".
capture
my $messages = $log ->capture;
my $messages = $log ->capture( 'debug' );
|
Capture log messages for as long as the returned object exists, useful for testing log messages.
my $messages = $log ->capture( 'trace' );
$log ->fatal( 'Something very bad happened' );
$log ->trace( 'Just some debug information' );
like $messages , qr/Something very bad happened/ , 'logs contain fatal message' ;
like $messages ->[-1], qr/Just some debug information/ , 'trace message was last' ;
undef $messages ;
|
context
my $new = $log ->context( '[extra]' , '[information]' );
|
Construct a new child Mojo::Log object that will include context information with every log message.
my $log = Mojo::Log->new;
my $context = $log ->context( '[17a60115]' );
$context ->debug( 'This is a log message with context information' );
$context ->info( 'And another' );
|
debug
$log = $log ->debug( 'You screwed up, but that is ok' );
$log = $log ->debug( 'All' , 'cool' );
$log = $log ->debug( sub {...});
|
Emit "message" event and log debug
message.
error
$log = $log ->error( 'You really screwed up this time' );
$log = $log ->error( 'Wow' , 'seriously' );
$log = $log ->error( sub {...});
|
Emit "message" event and log error
message.
fatal
$log = $log ->fatal( 'Its over...' );
$log = $log ->fatal( 'Bye' , 'bye' );
$log = $log ->fatal( sub {...});
|
Emit "message" event and log fatal
message.
info
$log = $log ->info( 'You are bad, but you prolly know already' );
$log = $log ->info( 'Ok' , 'then' );
$log = $log ->info( sub {...});
|
Emit "message" event and log info
message.
is_level
my $bool = $log ->is_level( 'debug' );
|
Check active log "level".
$log ->level( 'debug' )->is_level( 'debug' );
$log ->level( 'debug' )->is_level( 'info' );
$log ->level( 'info' )->is_level( 'debug' );
$log ->level( 'fatal' )->is_level( 'warn' );
|
new
my $log = Mojo::Log->new;
my $log = Mojo::Log->new( level => 'warn' );
my $log = Mojo::Log->new({ level => 'warn' });
|
Construct a new Mojo::Log object and subscribe to "message" event with default logger.
trace
$log = $log ->trace( 'Whatever' );
$log = $log ->trace( 'Who' , 'cares' );
$log = $log ->trace( sub {...});
|
Emit "message" event and log trace
message.
warn
$log = $log -> warn ( 'Dont do that Dave...' );
$log = $log -> warn ( 'No' , 'really' );
$log = $log -> warn ( sub {...});
|
Emit "message" event and log warn
message.
SEE ALSO
Mojolicious, Mojolicious::Guides, https://mojolicious.org.