The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Bot::Cobalt::Logger::Output - Log handler output manager

SYNOPSIS

## Normally constructed by Bot::Cobalt::Logger

my $log_output = Bot::Cobalt::Logger::Output->new(
  log_format  => $log_format,
  time_format => $time_format,
);

$log_output->add(
  'my_alias' => {
    type => 'File',
    file => $path_to_log,
  },
);

DESCRIPTION

This is the output manager for Bot::Cobalt::Logger, handling dispatch to log writers such as Bot::Cobalt::Logger::Output::File and Bot::Cobalt::Logger::Output::Term.

Methods

add

add() takes a list of aliases to add, mapped to a HASH containing the name of their writer class (type) and arguments to pass to the writer class constructor:

$log_output->add(
  ## Add a Bot::Cobalt::Logger::Output::File
  ## new() is passed 'file => $path_to_log'
  MyLogger => {
    type => 'File',
    file => $path_to_log,
  },
  
  ## Add a Logger::Output::Term also:
  Screen => {
    type => 'Term',
  },
);

The specified outputs will be initialized and tracked; their _write method is called when log messages are received.

del

del() takes a list of aliases to delete.

Returns the number of aliases actually deleted.

get

get() takes an alias and returns the appropriate writer object (or undef).

log_format

log_format can be specified at construction time or changed on the fly.

This is used to specify the actual layout of each individual logged message (for the default formatter; specific output classes may choose to override the formatter and disregard log_format).

Takes a "rplprintf" in Bot::Cobalt::Utils template string; normal rplprintf usage rules apply -- a replacement sequence starts with '%' and is terminated by either a space or a trailing '%'.

Defaults to "%level %time (%pkg%) %msg"

Replacement variables passed in to the template are:

msg     Actual (concatenated) log message
level   Level this message was logged to
time    Current date and time (see time_format)
pkg     Package this log method was called from
file    File called from
line    Line called from
sub     Subroutine called from

time_format

time_format can be specified at construction time or changed on the fly.

This is used to create the '%time' template variable for "log_format".

It is fed to strftime to create a time/date string; see the documentation for strftime on your system for a complete list of usable replacement sequences.

Defaults to "%Y-%m-%d %H:%M:%S"

Commonly used replacement sequences include:

%Y   Current year including century.  
%m   Current month (as a number)
%d   Current day of the month.

%A   Full weekday name
%a   Abbreviated weekday name
%B   Full month name
%b   Abbreviated month name

%H   Hour of the day (on a 24-hour clock)
%I   Hour of the day (on a 12-hour clock)
%p   'AM' or 'PM' indication
%M   Current minute
%S   Current second
%Z   Current timezone

%s   Seconds since epoch ("Unix time")
  
%%   Literal %

AUTHOR

Jon Portnoy <avenj@cobaltirc.org>