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'}, '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 (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. BUGS Report any issues on the public bugtracker. AUTHOR Dan Book 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