Log::Report::Dispatcher::File(3pm) | User Contributed Perl Documentation | Log::Report::Dispatcher::File(3pm) |
Log::Report::Dispatcher::File - send messages to a file or file-handle
Log::Report::Dispatcher::File is a Log::Report::Dispatcher
dispatcher Log::Report::Dispatcher::File => 'stderr' , to => \*STDERR, accept => 'NOTICE-'; # close a dispatcher dispatcher close => 'stderr'; # let dispatcher open and close the file dispatcher FILE => 'mylog', to => '/var/log/mylog' , charset => 'utf-8'; ... dispatcher close => 'mylog'; # will close file # open yourself, then also close yourself open OUT, ">:encoding('iso-8859-1')", '/var/log/mylog' or fault "..."; dispatcher FILE => 'mylog', to => \*OUT; ... dispatcher close => 'mylog'; close OUT; # dispatch into a scalar my $output = ''; open $outfile, '>', \$output; dispatcher FILE => 'into-scalar', to => \$outfile; ... dispatcher close => 'into-scalar'; print $output;
This basic file logger accepts an file-handle or filename as destination.
[1.00] writing to the file protected by a lock, so multiple processes can write to the same file.
Extends "DESCRIPTION" in Log::Report::Dispatcher.
Extends "METHODS" in Log::Report::Dispatcher.
Extends "Constructors" in Log::Report::Dispatcher.
-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>
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?) [1.19] After the three positional parameters, there may be a list of pairs providing additional facts about the exception. It may contain "location" information.
The "LONG" format is equivalent to:
my $t = strftime "%FT%T", gmtime; "[$t $$] $_[1] $_[0]"
Use of context:
format => sub { my ($msgstr, $domain, $msg, %more) = @_; my $host = $msg->context->{host}; "$host $msgstr"; }
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.
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";
Extends "Accessors" in Log::Report::Dispatcher.
Extends "Logging" in Log::Report::Dispatcher.
Extends "DETAILS" in Log::Report::Dispatcher.
This module is part of Log-Report distribution version 1.36, built on October 27, 2023. Website: http://perl.overmeer.net/CPAN/
Copyrights 2007-2023 by [Mark Overmeer <markov@cpan.org>]. For other contributors see ChangeLog.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See http://dev.perl.org/licenses/
2023-10-29 | perl v5.36.0 |