METHODS

Constructors

$class->new( $type, $name, %options )
Option Defined in Default

accept

Log::Report::Dispatcher

depend on mode

charset

Log::Report::Dispatcher

LOCALE

format

<adds timestamp>

format_reason

Log::Report::Dispatcher

'LOWERCASE'

locale

Log::Report::Dispatcher

<system locale>

mode

Log::Report::Dispatcher

'NORMAL'

replace

false

to

<required>

accept => REASONS
charset => CHARSET
format => CODE|'LONG'
[1.00] process each printed line. By default, this adds a timestamp, but you may want to add hostname, process number, or more.
   format => sub { '['.localtime().'] '.$_[0] }
   format => sub { shift }   # no timestamp
   format => 'LONG'
The first parameter to format is the string to print; it is already translated and trailed by a newline. The second parameter is the text-domain (if known). [1.10] As third parameter, you get the $msg raw object as well (maybe you want to use the message context?)
The "LONG" format is equivalent to:
  my $t = strftime "%FT%T", gmtime;
  "[$t $$] $_[1] $_[0]"
Use of context:
   format => sub { my ($msgstr, $domain, $msg) = @_;
      my $host = $msg->context->{host};
      "$host $msgstr";
   }
format_reason => 'UPPERCASE'|'LOWERCASE'|'UCFIRST'|'IGNORE'|CODE
locale => LOCALE
mode => 'NORMAL'|'VERBOSE'|'ASSERT'|'DEBUG'|0..3
replace => BOOLEAN
Only used in combination with a FILENAME: throw away the old file if it exists. Probably you wish to append to existing information.
Use the LOCALE setting by default, which is LC_CTYPE or LC_ALL or LANG (in that order). If these contain a character-set which Perl understands, then that is used, otherwise silently ignored.
to => FILENAME|FILEHANDLE|OBJECT|CODE
You can either specify a FILENAME, which is opened in append mode with autoflush on. Or pass any kind of FILE-HANDLE or some OBJECT which implements a print() method. You probably want to have autoflush enabled on your FILE-HANDLES.
When cleaning-up the dispatcher, the file will only be closed in case of a FILENAME.
[1.10] When you pass a CODE, then for each log message the function is called with two arguments: this dispatcher object and the message object. In some way (maybe via the message context) you have to determine the log filename. This means that probably many log-files are open at the same time.
   # configuration time
   dispatcher FILE => 'logfile', to =>
       sub { my ($disp, $msg) = @_; $msg->context->{logfile} };

   # whenever you want to change the logfile
   textdomain->updateContext(logfile => '/var/log/app');
   (textdomain 'mydomain')->setContext(logfile => '/var/log/app');

   # or
   error __x"help", _context => {logfile => '/dev/tty'};
   error __x"help", _context => "logfile=/dev/tty";

Accessors

$obj->filename

Returns the name of the opened file, or undef in case this dispatcher was started from a file-handle or file-object.

$obj->format
$obj->isDisabled
See isDisabled in Log::Report::Dispatcher.
$obj->mode
See mode in Log::Report::Dispatcher.
$obj->name
See name in Log::Report::Dispatcher.
$obj->needs( [$reason] )
See needs in Log::Report::Dispatcher.
$obj->output( $msg )

Returns the file-handle to write the log lines to. [1.10] This may depend on the $msg (especially message context)

$obj->type
See type in Log::Report::Dispatcher.

File maintenance

$obj->close

Only when initiated with a FILENAME, the file will be closed. In any other case, nothing will be done.

$obj->rotate( $filename|CODE )

[1.00] Move the current file to $filename, and start a new file.

Logging

$obj->collectLocation
$class->collectLocation
See collectLocation in Log::Report::Dispatcher.
$obj->collectStack( [$maxdepth] )
$class->collectStack( [$maxdepth] )
See collectStack in Log::Report::Dispatcher.
$obj->log( HASH-$of-%options, $reason, $message, $domain )
See log in Log::Report::Dispatcher.
$obj->stackTraceLine( %options )
$class->stackTraceLine( %options )
See stackTraceLine in Log::Report::Dispatcher.
$obj->translate( HASH-$of-%options, $reason, $message )
See translate in Log::Report::Dispatcher.