class Poco::AsyncChannel

Overview

A channel uses a separate thread for logging. More…

#include <AsyncChannel.h>

class AsyncChannel:
    public Poco::Channel,
    public Poco::Runnable
{
public:
    // construction

    AsyncChannel(
        Channel* pChannel = 0,
        Thread::Priority prio = Thread::PRIO_NORMAL
        );

    // methods

    void
    setChannel(Channel* pChannel);

    Channel*
    getChannel() const;

    virtual
    void
    open();

    virtual
    void
    close();

    virtual
    void
    log(const Message& msg);

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

protected:
    // methods

    virtual
    void
    run();

    void
    setPriority(const std::string& value);
};

Inherited Members

public:
    // methods

    virtual
    void
    setProperty(
        const std::string& name,
        const std::string& value
        ) = 0;

    virtual
    std::string
    getProperty(const std::string& name) const = 0;

    void
    duplicate() const;

    void
    release() const;

    int
    referenceCount() const;

    virtual
    void
    open();

    virtual
    void
    close();

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

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

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

    virtual
    void
    run() = 0;

Detailed Documentation

A channel uses a separate thread for logging.

Using this channel can help to improve the performance of applications that produce huge amounts of log messages or that write log messages to multiple channels simultaneously.

All log messages are put into a queue and this queue is then processed by a separate thread.

Construction

AsyncChannel(
    Channel* pChannel = 0,
    Thread::Priority prio = Thread::PRIO_NORMAL
    )

Creates the AsyncChannel and connects it to the given channel.

Methods

void
setChannel(Channel* pChannel)

Connects the AsyncChannel to the given target channel.

All messages will be forwarded to this channel.

Channel*
getChannel() const

Returns the target channel.

virtual
void
open()

Opens the channel and creates the background logging thread.

virtual
void
close()

Closes the channel and stops the background logging thread.

virtual
void
log(const Message& msg)

Queues the message for processing by the background thread.

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

Sets or changes a configuration property.

The “channel” property allows setting the target channel via the LoggingRegistry. The “channel” property is set-only.

The “priority” property allows setting the thread priority. The following values are supported:

* lowest
* low
* normal (default)
* high
* highest

The “priority” property is set-only.

virtual
void
run()

Do whatever the thread needs to do.

Must be overridden by subclasses.