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 <[email protected]>

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