Abstract base class for loggers used by the courier::filter framework
use Courier::Filter::Logger::My; # Need to use a non-abstract sub-class. my $logger = Courier::Filter::Logger::My->new(%options); # 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, ... );
package Courier::Filter::Logger::My; use base qw(Courier::Filter::Logger);
Sub-classes of Courier::Filter::Logger are used by the Courier::Filter mail filtering framework and its filter modules for the logging of errors and message rejections to arbitrary targets, like file handles or databases.
When overriding a method in a derived class, do not forget calling the inherited method from your overridden method.
The following constructor is provided and may be overridden:
Creates a new logger using the %options given as a list of key/value pairs. Initializes the logger, by creating/opening I/O handles, connecting to databases, etc.. \*(C`Courier::Filter::Logger::new()\*(C' creates a hash-ref as an object of the invoked class, and stores the %options in it, but does nothing else.
The following destructor is provided and may be overridden:
Uninitializes the logger, by closing I/O handles, disconnecting from databases, etc.. \*(C`Courier::Filter::Logger::destroy()\*(C' does nothing. Sub-classes may override this method and define clean-up behavior.
The following instance methods are provided and may be overridden:
Logs the error message given as $text (a string which may contain newlines). \*(C`Courier::Filter::Logger::log_error()\*(C' does nothing and should be overridden. Logs the Courier::Message given as $message as having been rejected due to $reason (a string which may contain newlines). \*(C`Courier::Filter::Logger::log_rejected_message()\*(C' does nothing and should be overridden.
Courier::Filter, Courier::Filter::Module.
For a list of prepared loggers that come with Courier::Filter, see \*(L"Bundled Courier::Filter loggers\*(R" in Courier::Filter::Overview.
For \s-1AVAILABILITY\s0, \s-1SUPPORT\s0, and \s-1LICENSE\s0 information, see Courier::Filter::Overview.
Julian Mehnle <[email protected]>