跳转到主要内容

专为logstash设计的JSON格式化程序

项目描述

此库提供标准Python日志记录,以便以JSON对象输出日志数据,以便发送到logstash。

此项目最初由exoscale(顺便说一句,这是一个很棒的主机服务)开源,感谢他们。

安装

Pip (PyPI)

pip install logstash_formatter

手册

python setup.py install

用法

由LogstashFormatter日志格式化程序提供JSON输出。

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 遵循 1.2.0 架构,不会更新字段,除了对 msg 进行特殊处理,当适用时将更新为 message

您还可以通过指定一个字典代替消息,或指定名为 extra 的字典作为命名参数来向您的 json 输出添加额外字段。当通过带有真值的名字参数 exc_info 提供时,如果堆栈中存在异常,其跟踪信息也将附加到有效负载中。

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"}

项目详情


下载文件

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

源分布

logstash_formatter-0.5.17.tar.gz (4.7 kB 查看哈希值

上传时间

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面