senf::log::SyslogUDPTarget Class Reference
[Targets]

Log target writing UDP syslog packets. More...

#include <senf/Utils/Logger/SyslogUDPTarget.hh>

Inheritance diagram for senf::log::SyslogUDPTarget:
Inheritance graph
[legend]

List of all members.


Detailed Description

Log target writing UDP syslog packets.

The SyslogUDPTarget will send all log messages directly via UDP to a target host. This host should have a syslog daemon or relay running. The protocol is defined in RFC-3164.

This log target has some important benefits:

  • It will never block. It may however lose log messages.
  • It does not add timestamp information locally.
These are advantages since this makes SyslogUDPTarget a very reliable high-performance logging target.

Valid facility values are from man 3 syslog:

LOG_AUTHPRIV, LOG_CRON, LOG_DAEMON, LOG_FTP, LOG_KERN, LOG_LOCAL0, LOG_LOCAL1, LOG_LOCAL2, LOG_LOCAL3, LOG_LOCAL4, LOG_LOCAL5, LOG_LOCAL6, LOG_LOCAL7, LOG_LPR, LOG_MAIL, LOG_NEWS, LOG_SYSLOG, LOG_USER, LOG_UUCP
the default facility is LOG_USER

The SENF log levels are mapped to syslog levels in the following way:

senf::log::VERBOSE LOG_DEBUG
senf::log::NOTICE LOG_INFO
senf::log::MESSAGE LOG_NOTICE
senf::log::IMPORTANT LOG_WARNING
senf::log::CRITICAL LOG_CRIT
senf::log::FATAL LOG_EMERG
Note:
Since the UDP syslog packets are limited to 1024 characters and there must be some space left so a relay may optionally add a timestamp and hostname section, the log messages are split after 896 characters. Additionally the log messages are split at each newline char since non-printable characters are not allowed.
Implementation note:
The RFC only recommends the exact message format. This allows us to include the PRI part but skip the HEADER part (which includes the timestamp and hostname) for better performance. We add a space after the PRI to force the syslog daemon to skip the HEADER part.

Definition at line 93 of file SyslogUDPTarget.hh.


Classes

struct   RegisterConsole

Public Types

enum   LogFacility {
  AUTHPRIV = LOG_AUTHPRIV, CRON = LOG_CRON, DAEMON = LOG_DAEMON, FTP = LOG_FTP,
  KERN = LOG_KERN, LOCAL0 = LOG_LOCAL0, LOCAL1 = LOG_LOCAL1, LOCAL2 = LOG_LOCAL2,
  LOCAL3 = LOG_LOCAL3, LOCAL4 = LOG_LOCAL4, LOCAL5 = LOG_LOCAL5, LOCAL6 = LOG_LOCAL6,
  LOCAL7 = LOG_LOCAL7, LPR = LOG_LPR, MAIL = LOG_MAIL, NEWS = LOG_NEWS,
  SYSLOG = LOG_SYSLOG, USER = LOG_USER, UUCP = LOG_UUCP
}

Public Member Functions

bool  syslog () const
  true, if using syslog format, false otherwise
void  syslog (bool enabled=true)
  Set syslog format.

Structors and default members

  SyslogUDPTarget (INet4Address const &target, int facility=LOG_USER)
  SyslogUDPTarget (INet4SocketAddress const &target, int facility=LOG_USER)
  SyslogUDPTarget (INet6Address const &target, int facility=LOG_USER)
  SyslogUDPTarget (INet6SocketAddress const &target, int facility=LOG_USER)

Member Enumeration Documentation

enum senf::log::SyslogUDPTarget::
LogFacility
Enumerator:
AUTHPRIV 
CRON 
DAEMON 
FTP 
KERN 
LOCAL0 
LOCAL1 
LOCAL2 
LOCAL3 
LOCAL4 
LOCAL5 
LOCAL6 
LOCAL7 
LPR 
MAIL 
NEWS 
SYSLOG 
USER 
UUCP 

Definition at line 142 of file SyslogUDPTarget.hh.


Constructor & Destructor Documentation

senf::log::SyslogUDPTarget::
SyslogUDPTarget ( INet4Address const &  target,
int  facility = LOG_USER )

Definition at line 35 of file SyslogUDPTarget.cci.

senf::log::SyslogUDPTarget::
SyslogUDPTarget ( INet4SocketAddress const &  target,
int  facility = LOG_USER )

Definition at line 43 of file SyslogUDPTarget.cci.

senf::log::SyslogUDPTarget::
SyslogUDPTarget ( INet6Address const &  target,
int  facility = LOG_USER )

Definition at line 51 of file SyslogUDPTarget.cci.

senf::log::SyslogUDPTarget::
SyslogUDPTarget ( INet6SocketAddress const &  target,
int  facility = LOG_USER )

Definition at line 59 of file SyslogUDPTarget.cci.


Member Function Documentation

void senf::log::SyslogUDPTarget::
syslog ( bool  enabled = true )

Set syslog format.

Definition at line 73 of file SyslogUDPTarget.cci.

bool senf::log::SyslogUDPTarget::
syslog ()

true, if using syslog format, false otherwise

When syslog format is disabled, messages are not formated as valid syslog messages but sent using plain UDP.

Definition at line 67 of file SyslogUDPTarget.cci.


The documentation for this class was generated from the following files: