Skip to main content

Send syslog data over a TCP/TLS socket.

Project description

build license kit format

This library allows sending syslog messages over TCP and TLS, similar to how Python’s built-in SysLogHandler sends log lines over UDP. Since TCP isn’t fire-and-forget like UDP, this library uses a daemon thread to send log-lines in the background without blocking the main application thread. Shutdown of the main process, however, is blocked until all log lines in the send-queue have been sent.

Installation

The documentation below assumes you’re configuring the library to send logging to Papertrail, since Papertrail is a commonly used rsyslog provider that supports TCP/TLS connections. The same instructions should be applicable to any TCP/TLS syslog listener.

Obtain the TLS CA Certificates

Download the syslog listener’s TLS certificates file in PEM format and save it somewhere. For example:

curl -o /path/to/papertrail-bundle.pem https://papertrailapp.com/tools/papertrail-bundle.pem

This step isn’t needed is you aren’t planning to validate the listener’s certificate, but you should always validate the certificate. Otherwise, you might as well continue using syslog over UDP.

Setup: Django

The below sample code, when placed in your project’s settings.py file, configures Django’s logging framework.

import ssl

syslog_host = 'logsX.papertrailapp.com'
syslog_port = 55555
syslog_cert_path = '/path/to/papertrail-bundle.pem'

LOGGING = {
    'version': 1,
    'formatters': {
        'simple': {
            'format': '%(asctime)s django %(name)s: %(levelname)s %(message)s',
            'datefmt': '%Y-%m-%dT%H:%M:%S',
        },
    },
    'handlers': {
        'syslog': {
            'level': 'INFO',
            'class': 'tlssyslog.handlers.TLSSysLogHandler',
            'formatter': 'simple',
            'address': (syslog_host, syslog_port),
            'ssl_kwargs': {
                'cert_reqs': ssl.CERT_REQUIRED,
                'ssl_version': ssl.PROTOCOL_TLS,
                'ca_certs': syslog_cert_path,
            },
        },
    },
    'root': {
        'handlers': ['syslog'],
        'level': 'INFO',
    }
}

Setup: Generic Python Application

The below sample code configures Python’s logging framework.

import logging.config
import ssl

syslog_host = 'logsX.papertrailapp.com'
syslog_port = 55555
syslog_cert_path = '/path/to/papertrail-bundle.pem'

logging.config.dictConfig({
    'version': 1,
    'formatters': {
        'simple': {
            'format': '%(asctime)s django %(name)s: %(levelname)s %(message)s',
            'datefmt': '%Y-%m-%dT%H:%M:%S',
        },
    },
    'handlers': {
        'syslog': {
            'level': 'INFO',
            'class': 'tlssyslog.handlers.TLSSysLogHandler',
            'formatter': 'simple',
            'address': (syslog_host, syslog_port),
            'ssl_kwargs': {
                'cert_reqs': ssl.CERT_REQUIRED,
                'ssl_version': ssl.PROTOCOL_TLS,
                'ca_certs': syslog_cert_path,
            },
        },
    },
    'root': {
        'handlers': ['syslog'],
        'level': 'INFO',
    }
})

Changelog

0.1.1

  • Fix issue with forked processes not being able to log due to process copy-on-write behavior.
    • After a process fork occurs, the previously created queue and daemon thread are invalidated and recreated (for the child process only).

    • Uses the process PID to detect when a fork has occurred.

0.1.0

  • Initial release.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tls-syslog-0.1.1.tar.gz (8.2 kB view details)

Uploaded Source

Built Distribution

tls_syslog-0.1.1-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

File details

Details for the file tls-syslog-0.1.1.tar.gz.

File metadata

  • Download URL: tls-syslog-0.1.1.tar.gz
  • Upload date:
  • Size: 8.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for tls-syslog-0.1.1.tar.gz
Algorithm Hash digest
SHA256 dbe2fa83992a8e061d06b33307b67af6cd3352155b830c4c3711179d5a39a071
MD5 93750ae53d94d89fba8cb65409954927
BLAKE2b-256 0db5c76b390e8b46346acc6025defaa80185342bb645e1605bab8d5c62ebc0e0

See more details on using hashes here.

File details

Details for the file tls_syslog-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for tls_syslog-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1cfc2a89157d67802e9ee09e6f2a31d219f0c36d46f0e869872ccb229ec67ce6
MD5 34bdc40fde74093b5910198da67b4030
BLAKE2b-256 be6f7178885300dfbc4203686eb90bffd04b5c01562a6df32d0275159a5a7a93

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page