This module implements an RFC 5424 IETF Syslog Protocol generator in Python. It should work on Python 2.7 or Python 3.4+.

This work is available under the terms of the ISC License.

Members

class syslog_rfc5424_formatter.RFC5424Formatter(fmt='%(message)s', datefmt=None, style='%', procid=None, msgid=None, sd_id=None)[source]

A derived formatter than allows for isotime specification for full RFC5424 compliancy (with corrected TZ format).

This should be combined with the Syslog Handler to actually emit logs.

For a “proper” ISOTIME format, use “%(isotime)s” in a formatter instance of this class or a class derived from this class. This is for a work-around where strftime has no mechanism to produce timezone in the format of “-08:00” as required by RFC5424.

The ‘%(isotime)s’ replacement will read in the record timestamp and try and reparse it. This really is a problem with RFC5424 and strftime. I am unsure if this will be fixed in the future (in one or the other case)

This formatter has an added benefit of allowing for ‘%(hostname)s’ to be specified which will return a ‘-’ as specified in RFC5424 if socket.gethostname() returns bad data (exception).

This formatter will automatically insert the RFC5424 header for you; the format string that you pass in the constructor is only applied to the message body (and should typically just be %(message)).

Stuctured Data Example:

[exampleSDID@32473 iut=”3” eventSource=”Application” eventID=”1011”]

To use structured data:

  1. Construct the logger with an sd_id kwarg (or set the sd_id attribute on the logger object)

  2. Construct your individual records with {‘args’: {‘structured_data’: {‘iut’: ‘3’}}}

format(record)[source]

Format the specified record as text.

The record’s attribute dictionary is used as the operand to a string formatting operation which yields the returned string. Before formatting the dictionary, a couple of preparatory steps are carried out. The message attribute of the record is computed using LogRecord.getMessage(). If the formatting string uses the time (as determined by a call to usesTime(), formatTime() is called to format the event time. If there is exception information, it is formatted using formatException() and appended to the message.

property msgid

Default MSGID to add to syslog message

property procid

Default PROCID to add to syslog message

property sd_id

Default SD-ID to add to STRUCTURED-DATA section in syslog message

ChangeLog

Indices and tables