---
name: "Courier::Filter::Logger"
section: "3pm"
platform: "linux"
package: "courier-filter-perl"
version: "0.200+ds-6"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Courier::Filter::Logger"
---

# Courier::Filter::Logger(3pm)

Abstract base class for loggers used by the Courier::Filter framework

## NAME

Courier::Filter::Logger - Abstract base class for loggers used by the Courier::Filter framework

## SYNOPSIS

### Courier::Filter logging

```
    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,
        ...
    );
```

### Deriving new logger classes

```
    package Courier::Filter::Logger::My;
    use base qw(Courier::Filter::Logger);
```

## DESCRIPTION

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.

### Constructor

The following constructor is provided and may be overridden:

- **new(%options)**: returns *Courier::Filter::Logger*

  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..

  `"Courier::Filter::Logger::new()"` creates a hash-ref as an object of the invoked class, and stores the `%options` in it, but does nothing else.

### Destructor

The following destructor is provided and may be overridden:

- **destroy**

  Uninitializes the logger, by closing I/O handles, disconnecting from databases, etc..

  `"Courier::Filter::Logger::destroy()"` does nothing.  Sub-classes may override this method and define clean-up behavior.

### Instance methods

The following instance methods are provided and may be overridden:

- **log\_error($text)**

  Logs the error message given as `$text` (a string which may contain newlines).

  `"Courier::Filter::Logger::log_error()"` does nothing and should be overridden.

- **log\_rejected\_message($message, $reason)**

  Logs the **Courier::Message** given as `$message` as having been rejected due to `$reason` (a string which may contain newlines).

  `"Courier::Filter::Logger::log_rejected_message()"` does nothing and should be overridden.

## SEE ALSO

Courier::Filter, Courier::Filter::Module.

For a list of prepared loggers that come with Courier::Filter, see "Bundled Courier::Filter loggers" in Courier::Filter::Overview.

For AVAILABILITY, SUPPORT, and LICENSE information, see Courier::Filter::Overview.

## AUTHOR

Julian Mehnle \<julian@mehnle.net\>
