class Poco::Net::RemoteSyslogListener

Overview

RemoteSyslogListener implements listening for syslog messages sent over UDP, according to RFC 5424 “The Syslog Protocol” and RFC 5426 “Transmission of syslog messages over UDP”. More…

#include <RemoteSyslogListener.h>

class RemoteSyslogListener: public Poco::SplitterChannel
{
public:
    // fields

    static const std::string PROP_PORT;
    static const std::string PROP_THREADS;
    static const std::string LOG_PROP_APP;
    static const std::string LOG_PROP_HOST;

    // construction

    RemoteSyslogListener();
    RemoteSyslogListener(Poco::UInt16 port);

    RemoteSyslogListener(
        Poco::UInt16 port,
        int threads
        );

    // methods

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

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

    virtual
    void
    open();

    virtual
    void
    close();

    void
    processMessage(const std::string& messageText);

    void
    enqueueMessage(
        const std::string& messageText,
        const Poco::Net::SocketAddress& senderAddress
        );

    static
    void
    registerChannel();
};

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;

    void
    addChannel(Channel* pChannel);

    void
    removeChannel(Channel* pChannel);

    virtual
    void
    log(const Message& msg);

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

    virtual
    void
    close();

    int
    count() const;

Detailed Documentation

RemoteSyslogListener implements listening for syslog messages sent over UDP, according to RFC 5424 “The Syslog Protocol” and RFC 5426 “Transmission of syslog messages over UDP”.

In addition, RemoteSyslogListener also supports the “old” BSD syslog protocol, as described in RFC 3164.

The RemoteSyslogListener is a subclass of Poco::SplitterChannel. Every received log message is sent to the channels registered with addChannel() or the “channel” property.

Poco::Message objects created by RemoteSyslogListener will have the following named parameters:

- addr: IP address of the host/interface sending the message.
- host: host name; only for "new" syslog messages.
- app:  application name; only for "new" syslog messages.

Construction

RemoteSyslogListener()

Creates the RemoteSyslogListener.

RemoteSyslogListener(Poco::UInt16 port)

Creates the RemoteSyslogListener, listening on the given port number.

RemoteSyslogListener(
    Poco::UInt16 port,
    int threads
    )

Creates the RemoteSyslogListener, listening on the given port number and using the number of threads for message processing.

Methods

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

Sets the property with the given value.

The following properties are supported:

* port: The UDP port number where to listen for UDP packets
  containing syslog messages. If 0 is specified, does not
  listen for UDP messages.
* threads: The number of parser threads processing
  received syslog messages. Defaults to 1. A maximum
  of 16 threads is supported.
virtual
std::string
getProperty(const std::string& name) const

Returns the value of the property with the given name.

virtual
void
open()

Starts the listener.

virtual
void
close()

Stops the listener.

void
processMessage(const std::string& messageText)

Parses a single line of text containing a syslog message and sends it down the filter chain.

void
enqueueMessage(
    const std::string& messageText,
    const Poco::Net::SocketAddress& senderAddress
    )

Enqueues a single line of text containing a syslog message for asynchronous processing by a parser thread.

static
void
registerChannel()

Registers the channel with the global LoggingFactory.