更改密钥' python json logger中的名称

发布于 2025-02-11 13:48:04 字数 1029 浏览 1 评论 0原文

我想在我的 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()

当我运行它时,一切都很好,我只想更改一些钥匙的名字:

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

我该如何实现?

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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

究竟谁懂我的在乎 2025-02-18 13:48:05

显然,我错过了此选项 在文档中。

    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
    )

然后,我得到所需的结果

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"
}
等风也等你 2025-02-18 13:48:05

重命名exc_info仅适用于版本2.0.6或更高版本。

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文