DOKK / manpages / debian 12 / liblog-agent-perl / Log::Agent::Channel.3pm.en
Agent::Channel(3pm) User Contributed Perl Documentation Agent::Channel(3pm)

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

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

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.

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

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

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:

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 the channel.
This is the creation routine. Its signature varies for each channel, naturally.

Raphael Manfredi <Raphael_Manfredi@pobox.com>

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

2022-10-15 perl v5.34.0