---
name: "Log::Agent::Channel"
section: "3pm"
platform: "linux"
package: "liblog-agent-perl"
version: "1.005-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Log::Agent::Channel"
---

# Log::Agent::Channel(3pm)

ancestor class for all Log::Agent channels

## 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)](/syslogd/8.md) 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).
