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.