通过TCP/TLS套接字发送系统日志数据。

tls-syslog的Python项目详细描述


buildlicensekitformat

这个库允许通过tcp和tls发送syslog消息,类似于python的内置SysLogHandler如何通过udp发送日志行。由于tcp不像udp那样容易触发和忘记,所以这个库使用后台程序线程在后台发送日志行,而不阻塞主应用程序线程。但是,在发送队列中的所有日志行都已发送之前,主进程的关闭将被阻止。

安装

下面的文档假设您正在配置库以将日志发送到Papertrail,因为PaperTrail是支持TCP/TLS连接的常用rsyslog提供程序。同样的指令应该适用于任何TCP/TLS系统日志侦听器。

获取TLS CA证书

下载pem格式的syslog监听器的TLS certificates file,并将其保存到某个地方。例如:

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

不需要执行此步骤,因为您不打算验证侦听器的证书,但应该始终验证证书。否则,您最好继续使用udp上的syslog。

设置:django

下面的示例代码放在项目的settings.py文件中时,配置了django的日志框架。

importsslsyslog_host='logsX.papertrailapp.com'syslog_port=55555syslog_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的日志框架。

importlogging.configimportsslsyslog_host='logsX.papertrailapp.com'syslog_port=55555syslog_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的支持
  • 添加对Python3.7的支持
  • 从Sentry的旧sdk(Raven)迁移到他们的新sdk(Sentry sdk)。

0.1.3

  • 通过更好地处理在打开Syslog收集器套接字时抛出的错误,提高了持久性。

0.1.2

  • 修复日志行不总是通过套接字连接完全发送的问题,从而导致它们丢失。
  • 在套接字发送工作线程出错时,通过[raven/sentry](https://docs.sentry.io/clients/python/)(如果已安装)添加更好的错误处理。

0.1.1

  • 修复由于进程写时复制行为导致分叉进程无法记录的问题。
    • 发生进程分叉后,先前创建的队列和守护进程线程将失效并重新创建(仅适用于子进程)。
    • 使用进程PID检测何时发生分叉。

0.1.0

  • 初次发布。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
具有x86javapath的x64机器上x86java上的java JNI未满足链接错误   java将Pixmap的一部分上传到GPU   图像Java位图RLE8格式   java Android studio谷歌广告崩溃应用程序   java如何创建包含未知数量对象的变量?   Java计算给定int数组的所有可能组合   java JDBC classnotfound异常   httpclient中的java将HttpEntity转换为字符串的最优雅/正确的方法是什么?   如何从Java程序运行nano?   java在安卓中调用自定义类/方法   调用方法和JOptionPane后,允许代码继续执行所需的java计时器或其他想法   关于侦听器的向量Java并发问题   线程池执行器Java线程池   java配置DTO上的Swagger javax验证约束   Java中用于按钮功能的swing操作命令   ServletOutputStream中的java设置状态代码   java打印输入数组的平均值