使用tcp和可选tls的快速、高效和有用的syslog收集器

pysyslog的Python项目详细描述


pysyslog

https://img.shields.io/pypi/v/pysyslog.svghttps://img.shields.io/travis/ilovetux/pysyslog.svgDocumentation Status

使用TCP和可选TLS的快速、高效和有用的系统日志收集器

功能

  • TLS支持
  • 持久TCP连接
  • 灵活的日志配置(由Python的日志模块驱动)

关于

为了达到要求的速度,我们做了一些妥协 值得注意的一点是,我们不试图遵守任何RFC。我们没有 解析任何消息,也不提供任何特定于syslog的功能。那个 也就是说,由于syslog只是传输上的纯文本,我们应该 可与大多数(如果不是全部)系统日志客户端互操作。

安装

您可以使用安装:

$ pip install pysyslog

使用量

要启动本地系统日志收集器(侦听TCP 127.0.0.1:514),可以 发出以下命令:

$ pysyslog

如果要自定义侦听主机和端口,可以将它们作为 位置参数。例如,如果你想听 端口8000的所有可用接口您可以发出以下命令:

$ pysyslog 0.0.0.0 8000

如果要启用TLS,必须提供密钥和证书的路径 (必须为PEM格式)您可以发出以下命令:

$ pysyslog --cert /path/to/cert.pem --key /path/to/key.pem

如果密钥和证书包含在同一个文件中,则必须传递该文件 指向键和证书的路径:

$ pysyslog --cert /path/to/key-and-cert.pem --key /path/to/key-and-cert.pem

所有日志消息都将发送到stdout。如果您想自定义 目的地,您必须提供json格式的日志配置:

$ pysyslog --logging-config /path/to/logging.json

logging.json中,类似这样的东西会将所有内容发送到stdout 并将127.0.0.1中的所有内容发送到文件/localhost.log

{
  "version": 1,
  "root": {
      "level": "DEBUG",
      "propagate": true,
      "handlers": ["stdout"]
  },
  "formatters": {
      "brief": {
          "format": "%(asctime)s %(message)s"
      }
  },
  "handlers": {
      "stdout": {
        "class": "logging.StreamHandler",
        "formatter": "brief",
        "level": "DEBUG",
        "stream": "ext://sys.stdout"
      },
      "localhost-file": {
          "class": "logging.FileHandler",
          "formatter": "brief",
          "level": "DEBUG",
          "filename": "./localhost.log",
          "delay": true
      }
  },
  "loggers": {
      "127.0.0.1": {
          "handlers": ["localhost-file"],
          "level": "DEBUG",
          "propagate": true
    }
  }
}

有关日志配置格式的详细信息,请参阅 https://docs.python.org/3/library/logging.config.html#configuration-dictionary-schema

架构

python的socketserver模块提供了tcp服务器功能。什么时候? 一个客户端连接,一个线程生成,套接字将被轮询以获取数据。 这些连接在接收到一条消息后不会关闭,而是利用 TCP的流式传输功能,使这些连接保持打开状态,因此我们不 需要多次执行我们的三方握手,除非客户关闭 连接。

一旦建立了连接,接收到的每一行都将放在队列中。这个 队列由单独的写入程序进程读取。然后将消息提交给 python日志系统通过以 远程对等。这允许细粒度配置,其中输出可以是 发送到许多目的地,如文件、stdout甚至其他系统日志 收藏家。

学分

这个包是用Cookiecutteraudreyr/cookiecutter-pypackage项目模板创建的。

历史记录

0.1.0(2018-07-20)

  • pypi上的第一个版本。

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

推荐PyPI第三方库


热门话题
java如何在Rxjava中更改列表时通知obsever   java如何验证spring MVC web app中是否设置了连接池?   从Textview选择文本时出现安卓错误(java.lang.IndexOutOfBoundsException:setSpan(1…1)在0之前开始)   javakotlin:作为方法参数的接口   java将列强制转换为hibernate条件中的类型   java如何在屏幕上获取输出对象?   java内部调用方法   java Log4j2模式布局+转换模式处的负数   java将EditText转换为浮动安卓 eclipse   对Java继承规则感到困惑   java将外部文件打包到jar中,然后允许代码对这些打包的文件执行操作   java如何通过输入给定字段之一进行用户搜索?   java Android从应用程序调用活动   java如何从相机中获取图像并将其添加到google地图上作为标记?   java自定义Listview在选择Edittext并打开键盘之前不显示   javascript验证JSON字符串服务端   使用java流从列表中获取素数   java无法让我的菜单打开方法   用户界面高效的动态生成Java GUI