From Code to Community: Sponsoring The Perl and Raku Conference 2025 Learn more

NAME

Mojolicious::Plugin::Log::Any - Use other loggers in a Mojolicious application

SYNOPSIS

package MyApp;
sub startup {
my $self = shift;
# Log::Any (default)
use Log::Any::Adapter {category => 'MyApp', message_separator => ' '}, 'Syslog';
$self->plugin('Log::Any');
# Log::Contextual
use Log::Contextual -logger => Log::Contextual::WarnLogger->new({env_prefix => 'MYAPP'});
$self->plugin('Log::Any' => {logger => 'Log::Contextual});
# Log::Dispatch
my $logger = Log::Dispatch->new(outputs => ['File::Locked',
min_level => 'warning',
filename => '/path/to/file.log',
mode => 'append',
newline => 1,
callbacks => sub { my %p = @_; '[' . localtime() . '] ' . $p{message} },
]);
$self->plugin('Log::Any' => {logger => $logger});
# Log::Dispatchouli
my $logger = Log::Dispatchouli->new({ident => 'MyApp', facility => 'daemon', to_file => 1});
$self->plugin('Log::Any' => {logger => $logger});
# Log::Log4perl
Log::Log4perl->init($self->home->child('log.conf')->to_string);
$self->plugin('Log::Any' => {logger => 'Log::Log4perl'});
}
# or in a Mojolicious::Lite app
use Log::Any::Adapter {category => 'Mojolicious::Lite'}, File => app->home->child('myapp.log'), log_level => 'info';
plugin 'Log::Any';

DESCRIPTION

Mojolicious::Plugin::Log::Any is a Mojolicious plugin that redirects the application logger to pass its log messages to an external logging framework using "attach_logger" in Mojo::Log::Role::AttachLogger. By default, Log::Any is used, but a different framework or object may be specified. For Log::Any or Log::Log4perl, log messages are dispatched with a category of the application class name, which is Mojolicious::Lite for lite applications.

The default behavior of the Mojo::Log object to filter messages by level, keep history, prepend a timestamp, and write log messages to a file or STDERR will be suppressed, by setting the application log level to debug or trace (the lowest level) and removing the default "message" in Mojo::Log handler. It is expected that the logging framework output handler will be configured to handle these details as necessary. If you want to customize how the logging framework is attached, use Mojo::Log::Role::AttachLogger directly.

METHODS

Mojolicious::Plugin::Log::Any inherits all methods from Mojolicious::Plugin and implements the following new ones.

register

$plugin->register(Mojolicious->new);
$plugin->register(Mojolicious->new, {logger => $logger});

Register logger in Mojolicious application. Takes the following options:

logger

Logging framework or object to pass log messages to, of a type recognized by "attach_logger" in Mojo::Log::Role::AttachLogger. Defaults to Log::Any.

category

Passed through to "attach_logger" in Mojo::Log::Role::AttachLogger. Defaults to the application name.

prepend_level

Passed through to "attach_logger" in Mojo::Log::Role::AttachLogger.

message_separator

Passed through to "attach_logger" in Mojo::Log::Role::AttachLogger.

BUGS

Report any issues on the public bugtracker.

AUTHOR

Dan Book <dbook@cpan.org>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2017 by Dan Book.

This is free software, licensed under:

The Artistic License 2.0 (GPL Compatible)

SEE ALSO

Mojo::Log, Mojo::Log::Role::AttachLogger