Mail::SpamAssassin::Logger - SpamAssassin logging module


  use Mail::SpamAssassin::Logger;
  $SIG{__WARN__} = sub {
    log_message("warn", $_[0]);
  $SIG{__DIE__} = sub {
    log_message("error", $_[0]) if $_[0] !~ /\bin eval\b/;


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