Poco

class Channel

Library: Foundation
Package: Logging
Header: Poco/Channel.h

Description

The base class for all Channel classes.

Supports reference counting based garbage collection and provides trivial implementations of getProperty() and setProperty().

Inheritance

Direct Base Classes: Configurable, RefCountedObject

All Base Classes: Configurable, RefCountedObject

Known Derived Classes: Poco::Data::SQLChannel, AsyncChannel, ConsoleChannel, ColorConsoleChannel, EventChannel, EventLogChannel, FastLogger, FileChannel, FormattingChannel, Logger, NullChannel, SimpleFileChannel, SplitterChannel, StreamChannel, SyslogChannel, WindowsConsoleChannel, WindowsColorConsoleChannel, Poco::Net::RemoteSyslogChannel, Poco::Net::RemoteSyslogListener, Poco::Net::SMTPChannel

Member Summary

Member Functions: close, getProperty, log, open, setProperty

Inherited Functions: duplicate, getProperty, referenceCount, release, setProperty

Types Aliases

Ptr

using Ptr = AutoPtr < Channel >;

Constructors

Channel

Channel();

Creates the channel and initializes the reference count to one.

Destructor

~Channel protected virtual

~Channel() override;

Member Functions

close virtual

virtual void close();

Does whatever is necessary to close the channel. The default implementation does nothing.

getProperty virtual

std::string getProperty(
    const std::string & name
) const override;

log virtual

virtual void log(
    const Message & msg
) = 0;

Logs the given message to the channel. Must be overridden by subclasses.

If the channel has not been opened yet, the log() method will open it.

log virtual

virtual void log(
    Message && msg
);

Logs the given message to the channel by moving it.

This overload allows channels that need to store or queue messages (such as AsyncChannel) to avoid copying the message.

The default implementation simply calls log(const Message&), which is appropriate for channels that immediately process and discard the message (e.g., ConsoleChannel, FileChannel).

Subclasses that buffer or queue messages should override this method to take advantage of move semantics.

open virtual

virtual void open();

Does whatever is necessary to open the channel. The default implementation does nothing.

setProperty virtual

void setProperty(
    const std::string & name,
    const std::string & value
) override;