通过TCP/TLS套接字发送syslog数据。
项目描述
这个库允许通过TCP和TLS发送syslog消息,类似于Python内置的SysLogHandler通过UDP发送日志行。由于TCP不像UDP那样是一次性操作,这个库使用守护线程在后台发送日志行,而不阻塞主应用程序线程。然而,主进程的关闭将被阻塞,直到发送队列中的所有日志行都已被发送。
安装
下面的文档假设您正在配置库以将日志发送到Papertrail,因为Papertrail是一个常用的支持TCP/TLS连接的rsyslog提供程序。相同的说明应该适用于任何TCP/TLS sys日志监听器。
获取TLS CA证书
下载syslog监听器的TLS证书文件(PEM格式)并保存在某个位置。例如
curl -o /path/to/papertrail-bundle.pem https://papertrailapp.com/tools/papertrail-bundle.pem
如果您不打算验证监听器的证书,则不需要此步骤,但您应该始终验证证书。否则,您还不如继续使用UDP上的syslog。
设置: Django
以下示例代码,当放置在您的项目settings.py文件中时,配置Django的日志框架。
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',
}
}
设置: 通用Python应用程序
以下示例代码配置Python的日志框架。
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',
}
})
变更日志
0.2.0
添加对Django 2.1的支持
添加对Python 3.7的支持
从Sentry的旧SDK(raven)迁移到新SDK(sentry-sdk)。
0.1.3
通过更好地处理打开syslog收集器套接字时抛出的OSErrors错误条件来提高持久性。
0.1.2
修复了日志行未始终完全通过套接字连接发送的问题,导致它们丢失。
在套接字发送工作线程中的错误时,通过[Raven/Sentry](https://docs.sentry.io/clients/python/)(如果已安装)增加了更好的错误处理。
0.1.1
- 修复了由于进程复制写入行为,派生进程无法记录日志的问题。
在进程派生发生后,先前创建的队列和守护线程被无效化并重新创建(仅针对子进程)。
使用进程PID来检测何时发生派生。
0.1.0
初始版本。
项目详情
下载文件
下载您平台对应的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分发
构建分发
tls-syslog-0.2.0.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | dde46eac8437850c77954f8257f0092f9b8785a14b9343bbcff2cc52a6511e3d |
|
MD5 | 24dfda462f4db2dd79f97366a2d72b67 |
|
BLAKE2b-256 | 8e0f9439f97f23679b6b4ac4d8a5270dd62d583858595a38a6ce278a57a718f5 |
tls-syslog-0.2.0-py3-none-any.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | da057b858122f031d521a18b13d6ba7eff024e8c24c1accba50db94bacb5113e |
|
MD5 | 01842ce198104b9c8c1e4926685117f3 |
|
BLAKE2b-256 | 73d86074a6112165cce466ad7d17265d8357b38ab099518766dc3aa2ff6f5ef8 |