logstash的python日志处理程序。

python-logstash-nested的Python项目详细描述


python logstash fork

logstash的python日志处理程序。

此分叉具有一些附加功能:
  • 支持嵌套数据结构
  • 支持设置为数据类型
  • 支持ssl和基本身份验证的新http处理程序

http://logstash.net/

更改日志

0.5.0
  • 新的http处理程序
0.4.8
  • 添加对嵌套数据和集的支持
0.4.7
  • 在“跳过”列表中添加几个敏感字段
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-nested

用法

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,
      },
  },
  ...
}

logstash配置示例

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

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

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

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

推荐PyPI第三方库


热门话题
在IE10中重新加载另一个帧时,internet explorer Java小程序失败/消失   ThreadLocal变量的java性能   java系统。出来println不是打印输出   java从JAXB类获取元素属性   java组织。天啊。科尔巴。包裹。InvalidName:IDL:omg。org/CORBA/ORB/InvalidName:1.0   java有没有办法让非事务连接抛出异常?   java是否有任何方法可以使用JdbcTemplate和查询/条件Fluent API   javajpa级联类型。刷新不工作?   未考虑java Maven依赖关系管理   java MySQL MBR包含抛出MySQLExceptionError的语句   java验证整数并将其设为5位数   java发现了循环依赖的问题   java Hibernate left join fetch到使用@ManyToMany关联映射的softdeleted实体生成无效查询?   JavaH:commandButton多个操作:下载文件并呈现ajax表   Google Contacts API在Java、C#、Python或Ruby中是否有一个Hello World示例?