1

I want to change the keys' names in my python json logger:

import logging
from pythonjsonlogger import jsonlogger

def main() -> None:

    logger = logging.getLogger("myLovelyLogger")
    logger.warning("something terrible happened")

if __name__ == "__main__":

    logger = logging.getLogger("myLovelyLogger")
    handler = logging.StreamHandler()
    handler.setLevel(logging.INFO)

    formatter = jsonlogger.JsonFormatter(
        fmt="%(asctime)s %(name)s %(levelname)s %(message)s",
        datefmt="%d/%m/%y[ %H:%M:%S ]",
        json_indent=4
    )

    handler.setFormatter(formatter)
    logger.addHandler(handler)

    main()

When I run it, everything goes well, I just want to change some keys' names:

$ python3 main.py
{
    "asctime": "29/06/22[ 13:44:55 ]", # <--- change "asctime" to "time"
    "name": "myLovelyLogger",
    "levelname": "WARNING",            # <--- change "levelname" to "level"
    "message": "something terrible happened"
}

How can I achieve that?

3

2 Answers 2

5

Apparently I missed this option in the documentation.

    formatter = jsonlogger.JsonFormatter(
        fmt="%(asctime)s %(name)s %(levelname)s %(message)s",
        rename_fields={"asctime": "time", "levelname": "level"}, # <--- added this line
        datefmt="%d/%m/%y[ %H:%M:%S ]",
        json_indent=4
    )

Then I get the desired result 🙂:

$ python3 main.py
{
    "time": "29/06/22[ 14:10:12 ]",
    "name": "myLovelyLogger",
    "level": "WARNING",
    "message": "something terrible happened"
}
Sign up to request clarification or add additional context in comments.

1 Comment

Ahh, you were fast. I am just trying to add my solution. :D
0

Renaming exc_info only works with version 2.0.6 or later. See here.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.