用于logstash的json格式
logstash_formatter的Python项目详细描述
提供此库是为了允许标准python日志记录输出日志数据 作为json对象准备发送到logstash。
这个项目最初是由exoscale(这是一个很棒的托管服务btw)开源的,多亏了他们。
用法
json输出由logstashformatter日志格式化程序提供。
import logging from logstash_formatter import LogstashFormatterV1 logger = logging.getLogger() handler = logging.StreamHandler() formatter = LogstashFormatterV1() handler.setFormatter(formatter) logger.addHandler(handler)
logstashformatter可以采用以下命名参数:
- fmt:配置为json字符串,支持:
- extra:提供日志中始终存在的额外字段。
- source_host:重写源主机名。
- json_cls:要转发到json.dump的json编码器。
- json_default:未知类型的默认json表示, 默认情况下,将所有内容强制为字符串。
LogstashFormatterV1遵循more 1.2.0架构,不会更新 字段,除了msg的特殊处理外,它将更新为 message如果适用。
您还可以通过指定dict来代替消息,或者通过指定 命名参数extra作为字典。当为exc_info命名参数提供truthy值时, 如果在堆栈上发现异常,则其回溯也将附加到有效负载。
logger.info({"account": 123, "ip": "172.20.19.18"}) logger.info("classic message for account: {account}", extra={"account": account}) try: h = {} h['key'] except: logger.info("something unexpected happened", exc_info=True)
logstashformatter的示例输出
以下键将在输出json中找到:
- @source_host:日志的源主机名
- @timestamp:iso 8601时间戳
- @message:此日志的短消息
- @fields:所有额外字段
{ "@fields": { "account": "pyr", "args": [], "created": 1367480388.013037, "exception": [ "Traceback (most recent call last):\n", " File \"test.py\", line 16, in <module>\n k['unknown']\n", "KeyError: 'unknown'\n" ], "filename": "test.py", "funcName": "<module>", "levelname": "WARNING", "levelno": 30, "lineno": 18, "module": "test", "msecs": 13.036966323852539, "name": "root", "pathname": "test.py", "process": 1819, "processName": "MainProcess", "relativeCreated": 18.002986907958984, "thread": 140060726359808, "threadName": "MainThread" }, "@message": "TEST", "@source_host": "phoenix.spootnik.org", "@timestamp": "2013-05-02T09:39:48.013158" }
logstashformatterv1的示例输出
以下键将在输出json中找到:
- @timestamp:iso 8601时间戳
- @version:架构的版本
{"@version": 1, "account": "pyr", "lineno": 1, "levelno": 30, "filename": "test.py", "thread": 140566036444928, "@timestamp": "2015-03-30T09:46:23.000Z", "threadName": "MainThread", "relativeCreated": 51079.52117919922, "process": 10787, "source_host": "phoenix.spootnik.org", "processName": "MainProcess", "pathname": "test.py", "args": [], "module": "test", "msecs": 999.9005794525146, "created": 1427708782.9999006, "name": "root", "stack_info": null, "funcName": "<module>", "levelname": "WARNING", "message": "foo"}