跳转到主要内容

面向大众的基于JSON的日志记录

项目描述

将日志写入json-line格式。

源代码

aweber/json-scribe

下载

json-scribe @ pypi.org

这个库是将Docker容器日志发送到Loggly的结果。Loggly与结构化Syslog数据配合良好,但如果你将结构化的Syslog行作为JSON传递给聚合器,你最终会得到一个无法索引的混乱。此库包含几个类,可以更轻松、更干净地将日志内容作为单行JSON对象发送,包括异常。

用法

配置

{
   "version": 1,
   "filters": {
      "defaultsetter": {
         "()": "jsonscribe.AttributeSetter",
         "add_fields": {
            "correlation_id": "ext://UUID"
         }
      }
   },
   "formatters": {
      "jsonlines": {
         "()": "jsonscribe.JSONFormatter",
         "include_fields": [
            "name",
            "levelname",
            "asctime",
            "message",
            "module",
            "correlation_id",
            "exc_info"
         ],
      }
   },
   "handlers": {
      "loggly": {
         "class": "logging.StreamHandler",
         "formatter": "jsonlines",
         "filters": ["defaultsetter"],
         "stream": "ext://sys.stdout"
      }
   },
   "loggers": {
      "somepackage": {
         "level": "DEBUG",
      }
   },
   "root": {
      "level": "INFO",
      "handlers": ["jsonlines"]
   }
}

日志记录

以下示例是最简单的用法。它不过是日志模块的教科书式用法。它使用上面的日志配置并生成一个JSON数据块。

import logging.config
import json

if __name__ == '__main__':
   config = json.load(open('config.json'))
   logging.config.dictConfig(config)
   logger = logging.getLogger(__package__).getChild('main')
   logger.info('processing request')

JSON消息看起来像以下示例。它已被重新格式化以便于阅读。默认情况下,以紧凑的JSON格式呈现。

{
   "name": "somepackage.main",
   "levelname": "INFO",
   "asctime": "2018-08-09T07:44:54.231",
   "module": "somepackage.entrypoints",
   "correlation_id": "33CA3FB3-D66F-4D32-83A5-D5A8C3D92A6E",
   "message": "processing request",
   "exc_info": null
}

项目详情


下载文件

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

源代码分发

json-scribe-2.0.0.tar.gz (9.6 kB 查看哈希值)

上传时间 源代码

构建版本

json_scribe-2.0.0-py2.py3-none-any.whl (6.0 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持