跳转到主要内容

Logstash的Python日志处理器(分支版)

项目描述

python-logstash-tradingstrategy

Python的Logstash日志处理器。

注意: 这是一个从原始python-logstash项目分支出来的,用于Trading Strategy。它已经更新并修改了一些补丁,以支持高级功能。

变更日志

0.5.1:
  • 如果LogStash格式化器在将消息作为JSON输出时出现问题,将提供更好的异常消息,以便给出可能出现问题的线索

0.5.0:
  • 分支以进行新版本发布

  • 向处理器添加了extra_fields参数

0.4.7
  • 将几个敏感字段添加到skip_list中

0.4.6
  • 更新字段名称以匹配Logstash团队支持的Java对应版本

0.4.5
  • 允许传递交易所的路由键给AMQP处理器

0.4.4
  • 修复了urllib导入的python3兼容性问题。

  • 向easy_types中添加了long类型。

0.4.3
  • 添加了AMQP处理器。

0.4.2
  • 更新了README

  • 向处理器添加了tags参数

0.4.1
  • 添加了TCP处理器。

0.3.1
  • 添加了对Python 3的支持

0.2.2
  • 将处理器拆分为Handler和Formatter类

0.2.1

安装

使用pip

pip install python-logstash

用法

LogstashHandler 是一个自定义日志处理器,它使用 UDP 发送 Logstash 消息。

例如:

import logging
import logstash
import sys

host = 'localhost'

test_logger = logging.getLogger('python-logstash-logger')
test_logger.setLevel(logging.INFO)
test_logger.addHandler(logstash.LogstashHandler(host, 5959, version=1))
# test_logger.addHandler(logstash.TCPLogstashHandler(host, 5959, version=1))

test_logger.error('python-logstash: test logstash error message.')
test_logger.info('python-logstash: test logstash info message.')
test_logger.warning('python-logstash: test logstash warning message.')

# add extra field to logstash message
extra = {
    'test_string': 'python version: ' + repr(sys.version_info),
    'test_boolean': True,
    'test_dict': {'a': 1, 'b': 'c'},
    'test_float': 1.23,
    'test_integer': 123,
    'test_list': [1, 2, '3'],
}
test_logger.info('python-logstash: test extra fields', extra=extra)
当使用 extra 字段时,请确保不要使用保留名称。来自 Python 文档
“传递给 extra 的字典中的键不应与日志系统使用的键冲突。(有关日志系统使用的键的更多信息,请参阅 Formatter 文档。)”

要使用 AMQPLogstashHandler,您首先需要安装 pika。

pip install pika

例如:

import logging
import logstash

test_logger = logging.getLogger('python-logstash-logger')
test_logger.setLevel(logging.INFO)
test_logger.addHandler(logstash.AMQPLogstashHandler(host='localhost', version=1))

test_logger.info('python-logstash: test logstash info message.')
try:
    1/0
except:
    test_logger.exception('python-logstash-logger: Exception with stack trace!')

您还可以向处理器传递额外的字段,这样这些字段就会出现在 Logstash 中

# Pass `application` field and `tags` to Logstash
# with every log message
tags = ["python"]
extra_fields = {"application": "my_application_name}
handler = logstash.UDPLogstashHandler(
    logstash_server,
    5959,
    version=1,
    tags=tags,
    extra_fields==extra_fields,
    )

与 Django 一起使用

修改您的 settings.py 以将 python-logstash 集成到 Django 的日志中

LOGGING = {
  ...
  'handlers': {
      'logstash': {
          'level': 'DEBUG',
          'class': 'logstash.LogstashHandler',
          'host': 'localhost',
          'port': 5959, # Default value: 5959
          'version': 1, # Version of logstash event schema. Default value: 0 (for backward compatibility of the library)
          'message_type': 'logstash',  # 'type' field in logstash message. Default value: 'logstash'.
          'fqdn': False, # Fully qualified domain name. Default value: false.
          'tags': ['tag1', 'tag2'], # list of tags. Default: None.
          'extra_fields': {
              'server_name': 'myserver.local',
              'server_ip': '10.74.22.12',
          }, # dict of extra fields, always added to the log. Default: None.
      },
  },
  'loggers': {
      'django.request': {
          'handlers': ['logstash'],
          'level': 'DEBUG',
          'propagate': True,
      },
  },
  ...
}

示例 Logstash 配置

接收来自 python-logstash 事件的示例 Logstash 配置(logstash.conf)为:

input {
  udp {
    port => 5959
    codec => json
  }
}
output {
  stdout {
    codec => rubydebug
  }
}

对于 TCP 输入,您需要将 logstash 的输入更改为 tcp 并修改 django 日志处理器的类为 logstash.TCPLogstashHandler

版本

python3 -m venv venv
source venv/bin/activate
pip install setuptools twine
python setup.py bdist_wheel
twine build

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。

源代码分发

python-logstash-tradingstrategy-0.5.1.tar.gz (9.8 kB 查看哈希

上传时间 源代码

支持