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
- 在logstash 1.2.x中添加了对新json模式的支持。
http://tobrunet.ch/2013/09/logstash-1-2-0-upgrade-notes-included/和
https://logstash.jira.com/browse/LOGSTASH-675
- 添加了version参数。可用值:1(logstash 1.2.x版本格式),0-默认值(以前的版本)。
- 在logstash 1.2.x中添加了对新json模式的支持。
http://tobrunet.ch/2013/09/logstash-1-2-0-upgrade-notes-included/和
https://logstash.jira.com/browse/LOGSTASH-675
安装
使用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 } }