1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
|
#
# Courier::Filter::Logger::File class
#
# (C) 2003-2008 Julian Mehnle <julian@mehnle.net>
# $Id: File.pm 210 2008-03-21 19:30:31Z julian $
#
###############################################################################
=head1 NAME
Courier::Filter::Logger::File - File logger for the Courier::Filter framework
=cut
package Courier::Filter::Logger::File;
=head1 SYNOPSIS
use Courier::Filter::Logger::File;
my $logger = Courier::Filter::Logger::File->new(
file_name => $file_name
);
# For use in an individual filter module:
my $module = Courier::Filter::Module::My->new(
...
logger => $logger,
...
);
# For use as a global Courier::Filter logger object:
my $filter = Courier::Filter->new(
...
logger => $logger,
...
);
=cut
use warnings;
use strict;
use base 'Courier::Filter::Logger::IOHandle';
use Error ':try';
use Courier::Error;
use IO::File;
use constant TRUE => (0 == 0);
use constant FALSE => not TRUE;
=head1 DESCRIPTION
This class is a file logger class for use with Courier::Filter and its filter
modules. It is derived from B<Courier::Filter::Logger::IOHandle>.
=cut
# Implementation:
###############################################################################
=head2 Constructor
The following constructor is provided:
=over
=item B<new(%options)>: returns I<Courier::Filter::Logger::File>; throws
I<Courier::Error>
Creates a new logger that logs messages as lines to a file. Opens the file for
writing, creating it if necessary.
%options is a list of key/value pairs representing any of the following
options:
=over
=item B<file_name>
I<Required>. The name of the file to which log messages should be written.
=item B<timestamp>
A boolean value controlling whether every log message line should be prefixed
with a timestamp (in local time, in ISO format). Defaults to B<false>.
=back
=cut
sub new {
my ($class, %options) = @_;
my $handle = IO::File->new($options{file_name}, '>>')
or throw Courier::Error("Unable to open log file '$options{file_name}' for writing");
return $class->SUPER::new(
%options,
handle => $handle
);
}
=back
=head2 Instance methods
The following instance methods are provided, as inherited from
B<Courier::Filter::Logger::IOHandle>:
=over
=item B<log_error($text)>: throws Perl exceptions
Logs the error message given as C<$text> (a string which may contain newlines).
Prefixes each line with a timestamp if the C<timestamp> option has been set
through the constructor.
=item B<log_rejected_message($message, $reason)>: throws Perl exceptions
Logs the B<Courier::Message> given as C<$message> as having been rejected due
to C<$reason> (a string which may contain newlines).
=back
=head1 SEE ALSO
L<Courier::Filter::Logger::IOHandle>, L<Courier::Filter::Logger>,
L<Courier::Filter::Overview>.
For AVAILABILITY, SUPPORT, and LICENSE information, see
L<Courier::Filter::Overview>.
=head1 AUTHOR
Julian Mehnle <julian@mehnle.net>
=cut
TRUE;
|