[Python] How do I configure JsonFormatter in logging dictConfig?

Discussão em 'Python' iniciado por Stack, Abril 18, 2025.

  1. Stack

    Stack Membro Participativo

    I'd like to use logging.config.dictConfig with a json config file. But I want to use a formatter from another class: pythonjsonlogger.jsonlogger.JsonFormatter

    What's wrong with this code/json:

    $ cat test.json
    {
    "version": 1,
    "disable_existing_loggers": "true",
    "formatters": {
    "json": {
    "class": "pythonjsonlogger.jsonlogger.JsonFormatter"
    # also tried "jsonlogger.JsonFormatter" (comment not in real file)
    }
    },
    "handlers": {
    "console": {
    "class": "logging.StreamHandler",
    "level": "DEBUG",
    "formatter": "json",
    "stream": "ext://sys.stdout"
    }
    },
    "loggers": { },
    "root": {
    "handlers": ["console"],
    "level": "DEBUG"
    }
    }


    code:

    import sys
    sys.path.append('/usr/local/lib/python2.7/site-packages')
    import json
    import logging
    import logging.config
    from pythonjsonlogger import jsonlogger

    fp = open('/test.json')
    logging.config.dictConfig(json.load(fp))
    fp.close()
    logging.info('test log line')


    output:

    test log line


    Expected something like { "message": "test log line" }

    Continue reading...

Compartilhe esta Página