NAME
Mojolicious::Plugin::Log::Any - Use other loggers in a Mojolicious application
SYNOPSIS
package MyApp;
use Mojo::Base 'Mojolicious';
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::WarnLogger;
use Log::Contextual -logger => Log::Contextual::WarnLogger->new({env_prefix => 'MYAPP'});
$self->plugin('Log::Any' => {logger => 'Log::Contextual});
# Log::Dispatch
use 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
use Log::Dispatchouli;
my $logger = Log::Dispatchouli->new({ident => 'MyApp', facility => 'daemon', to_file => 1});
$self->plugin('Log::Any' => {logger => $logger});
# Log::Log4perl
use 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 Mojolicious::Lite;
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)