使用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实现的一个简单算法(计算概率)   更改应用程序背景动画的java首选项   java捕获图像并通过socket发送   基于双精度数组的对象的java排序Arraylist?   java似乎无法获得前面数字的正确总和   java卡住了Tomcat线程。日食乐观锁定   java是一个异步的Throwable类的printStackTrace()   java随机错误(可能是)Android支持库   java我应该在代码中自动创建DB表,还是在安装过程中使用preinit?   在被调用的方法/函数Java/Android中处理异常?   arraylist Java发送电子邮件非法分号?   while循环中的Java数组   java Arquillian和TransactionAttribute类型。需要新的   java“未找到合适的驱动程序”获取此错误   java高性能地将子类转换为真正的超类   java如何从另一个活动访问变量   安卓 Java Kotlin泛型将类getter作为参数传递到函数中   尝试访问数组的某个位置时需要java“]”