NAME

Mail::SpamAssassin::Logger - SpamAssassin logging module

SYNOPSIS

  use Mail::SpamAssassin::Logger;

  $SIG{__WARN__} = sub {
    log_message("warn", $_[0]);
  };

  $SIG{__DIE__} = sub {
    log_message("error", $_[0]) if $_[0] !~ /\bin eval\b/;
  };

METHODS

add_facilities(facilities)

Enable debug logging for specific facilities. Each facility is the area of code to debug. Facilities can be specified as a hash reference (the key names are used), an array reference, an array, or a comma-separated scalar string.

If "all" is listed, then all debug facilities are enabled. Higher priority informational messages that are suitable for logging in normal circumstances are available with an area of "info". Some very verbose messages require the facility to be specifically enabled (see would_log below).

log_message($level, $message)
log_message($level, @message)

Log a message at a specific level. Levels are specified as strings: "warn", "error", "info", and "dbg". The first element of the message must be prefixed with a facility name followed directly by a colon.

dbg("facility: message")

This is used for all low priority debugging messages.

info("facility: message")

This is used for informational messages indicating a normal, but significant, condition. This should be infrequently called. These messages are typically logged when SpamAssassin is run as a daemon.

add(method => 'syslog', socket => $socket, facility => $facility)
socket is the type the syslog ("unix" or "inet"). facility is the syslog facility (typically "mail").
add(method => 'file', filename => $file)
filename is the name of the log file.
add(method => 'stderr')

No options are needed for stderr logging, just don't close stderr first.

remove(method)

Remove a logging method. Only the method name needs to be passed as a scalar.

would_log($level, $facility)

Returns 0 if a message at the given level and with the given facility would be logged. Returns 1 if a message at a given level and facility would be logged normally. Returns 2 if the facility was specifically enabled.

The facility argument is optional.

close_log()

Close all logs.