logstash的python日志处理程序。

python-logstash的Python项目详细描述


python日志存储

logstash的python日志处理程序。 http://logstash.net/

更改日志

0.4.6
  • 更新字段名以匹配Logstash Crew支持的Java对应项
0.4.5
  • 允许将Exchange的路由密钥传递给AMQP处理程序
0.4.4
  • 修复了urllib导入python3的兼容性。
  • 添加了长类型到简单类型。
0.4.3
  • 添加了amqp处理程序。
0.4.2
  • 更新了自述文件
  • 向处理程序添加了tags参数
0.4.1
  • 添加了TCP处理程序。
0.3.1
  • 增加了对Python3的支持
0.2.2
  • 将处理程序拆分为处理程序类和格式化程序类
0.2.1

安装

使用pip:

pip install python-logstash

用法

LogstashHandler是一个自定义日志处理程序,它使用udp发送日志存储消息。

例如:

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 documentation.
“额外传递的字典中的键不应与日志系统使用的键冲突。(有关日志系统使用哪些键的详细信息,请参阅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!')

与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.
      },
  },
  'loggers': {
      'django.request': {
          'handlers': ['logstash'],
          'level': 'DEBUG',
          'propagate': True,
      },
  },
  ...
}

从python logstash接收事件的logstash配置示例(logstash.conf)是:

input {
  tcp {
    port => 5000
    codec => json
  }
}
output {
  stdout {
    codec => rubydebug
  }
}

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

推荐PyPI第三方库


热门话题
JavaJSonarray不会从SeekBar读取double   使用另一个类从Java中的2D数组打印用户输入   java ClassNotFoundException的原因   spring调用两个方法以返回Java中的不同页面   httpurlconnection Java禁止的代码错误,但浏览器错误(2)   java画布矩阵转换   java:在另一个java映射中使用“Map”作为值   java“未找到用于解密的证书”(Apache CXF,WSSecurity)   java如何查看JTable中选择的行   java在没有xmlwrappers的情况下重复xml元素序列集   java将垂直直方图打印到控制台   java Spring JDBCTemplate:构造不带特殊字符的JSON   java PayPal RestApi获取用户信息