用于日志记录的json格式化程序

logformatjson的Python项目详细描述


logformatjson是一个库,它为标准python日志记录包提供了一个简单的json格式化程序。它允许在实例化和运行时插入嵌套的任意元数据。图书馆有意见,但试图让大多数意见被推翻。

警告:此库正在积极开发中。日志格式和api预计将更改。

https://circleci.com/gh/kumoru/logformatjson.svg?style=svg

安装

  • 通过pip
pip install logformatjson

示例

  1. 基本用法-jsonformatter可以按预期设置在任何处理程序上:
importloggingimportsysfromlogformatjsonimportJSONFormatterLOGGER=logging.getLogger()LOGGER.setLevel(logging.DEBUG)log_handler=logging.StreamHandler(sys.stdout)log_handler.setFormatter(JSONFormatter())LOGGER.addHandler(log_handler)LOGGER.debug('this is my debug message',extra={'some_key':'important_value'})

它生成以下json(来自ipython):

{"timestamp":"2016-02-19T19:39:17.061886","message":"this is my debug message","levelname":"DEBUG","metadata":{"filename":"test.py","funcName":"<module>","extra":{"some_key":"important_value"},"log_type":"python","lineno":11,"module":"test","pathname":"test.py"},"log_version":"1.0"}
  1. every中添加附加元数据日志条目:
log_handler.setFormatter(JSONFormatter(metadata={'application_version':'1.0.0'}))
  1. 在实例化时重写默认值:

    • Override attributes copied or skipped from the LogRecord:
      log_handler.setFormatter(JSONFormatter(kept_attrs=['created',]))log_handler.setFormatter(JSONFormatter(skipped_attrs=['filename',]))
    • Override the provided json encoder:

      defmy_json_encoder(obj):returnint(obj)log_handler.setFormatter(JSONFormatter(json_encoder=my_json_encoder))
  2. 在运行时覆盖默认值:

    • Log type (intended to be mixed with extra fields):

      logger.debug('GET / HTTP/1.1',log_type='HTTP'}
  3. 额外字段:

    LOGGER.debug('this is my debug message',extra={'some_key':'important_value'})

测试

测试可以通过make

运行
make lint
make test

作者

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

推荐PyPI第三方库


热门话题
JavaSpringbean已创建但未自动连接   java LibGDX游戏在三星Galaxy Grand Prime上结束   如何在Java中列出字符串句子中所有匹配条件的单词   java在Recyclerview中使用“putExtra”传递数据   java从一个特定的数组中提取特定的JSON对象,以便在Android中通过一个意图放入另一个活动   java需要使用IntelliJ和设置项目SDK的帮助   java springcontextindexer和Swagger 3   java使用indexOf和substring计算数字   java使用xml解析在word文档中查找隐式分页符   在添加<context:componentscan basepackage=“com.young.user”/   java无条件更改JTable单元格的背景色   选择列表中的java调用oracle函数:节点无数据类型   java如何添加缓冲图像作为JFrame的背景,然后在此图像上添加面板?   java Javadoc找不到用scala编写的类   java连接到文件共享程序的IP地址   java将数组元素加载到集合中   Tomcat中的java servlet、过滤器和线程   非Bean对象中的java EJB CDI注入?   java与println和printf的不同舍入