NAME

Log::Agent::Channel - ancestor class for all Log::Agent channels

SYNOPSIS

@Log::Agent::Channel::XXX::ISA = qw(Log::Agent::Channel);

DESCRIPTION

The Log::Agent::Channel class is the root class from which all Log::Agent channels inherit. It is a deferred class, meaning that it cannot be instantiated directly. All the deferred routines need to be implemented by its heirs to form a valid driver.

Internally, the various Log::Agent::Driver objects create Log::Agent::Channel instances for each logging channel defined at driver creation time. The channels are therefore architecturally hidden within Log::Agent, since this module only provides redefined mappings for the various logxxx() routines (logerr(), logwarn(), logdie(), etc...).

However, this does not mean that channel classes cannot be used externally: the Log::Agent::Logger extension makes Log::Agent::Channel objects architecturally visible, thereby offering an application-level logging API that can be redirected to various places transparently for the application.

CHANNEL LIST

The following channels are currently made available by Log::Agent. More channels can be defined by the Log::Agent::Logger extension:

Log::Agent::Channel::File

This channel writes logs to files, defined by their path or via a magical opening sequence such as "|cmd". See Log::Agent::Channel::File.

Log::Agent::Channel::Handle

This channel writes logs to an already opened descriptor, as specified by its file handle: an IO::Handle object, or a GLOB reference such as \*FILE. See Log::Agent::Channel::Handle.

Log::Agent::Channel::Syslog

This channel redirects logs to the syslogd(8) daemon, which will then handle the dispatching to various logfiles, based on its own configuration. See Log::Agent::Channel::Syslog.

INTERFACE

You need not read this section if you're only using Log::Agent. However, if you wish to implement another channel, then this section might be of interest.

The following routines are deferred and therefore need to be defined by the heir:

write($priority, $logstring)

Emit the log entry held in $logstring, at priority $priority. A trailing "\n" is added to the $logstring, if needed (i.e. if the physical entity does not do it already, like syslog does).

The $priority argument must be a valid syslog priority, i.e. one of the following strings: "emerg", "alert", "crit", "err", "warning", "notice", "info", "debug".

The $logstring may not really be a plain string. It can actually be a Log::Agent::Message object with an overloaded stringification routine, so the illusion should be complete.

close

Close the channel.

make

This is the creation routine. Its signature varies for each channel, naturally.

AUTHOR

Raphael Manfredi <Raphael_Manfredi@pobox.com>

SEE ALSO

Log::Agent::Channel::File(3), Log::Agent::Channel::Handle(3), Log::Agent::Channel::Syslog(3), Log::Agent::Logger(3).