社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

如何在python日志消息中将“levelname”重命名为“level”?

Martin Thoma • 6 年前 • 1860 次点击  

我有一个python日志记录配置,如下所示:

LOGGING_CONFIG:
    version: 1
    formatters:
        human:
            class: logging.Formatter
            format: '[%(asctime)s]:[%(levelname)s]: %(message)s'
        json:
            class: pythonjsonlogger.jsonlogger.JsonFormatter
            format: '%(asctime)s %(levelname)s %(message)s'
    handlers:
        console:
            class: logging.StreamHandler
            level: DEBUG
            formatter: json  # change this to 'human' when you run it locally, json in production
        file:
            class: logging.FileHandler
            filename: logfile.log
            level: DEBUG
            formatter: json
    root:  # Logging for 3rd party stuff
        level: INFO
        handlers:
            - console
            - file
    project_name:  # Logging this module
        level: DEBUG
        handlers:
            - console
            - file

对于另一个系统,我需要结构化日志记录有一些固定的名称。一个例子是它不应该 levelname 但是 level . 如何重命名日志字段?

我所拥有的:

{"asctime": "2018-10-22 14:50:19,923", "levelname": "info", "message": "foobar"}

我想要的是:

{"asctime": "2018-10-22 14:50:19,923", "level": "info", "message": "foobar"}
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/39770
文章 [ 1 ]  |  最新文章 6 年前
Arman Ordookhani
Reply   •   1 楼
Arman Ordookhani    7 年前

levelname 不会出现在普通的python记录器中,而是出现在您使用的自定义格式化程序中。根据我的理解,您可以使用下面的代码片段自定义它输出的dict:

class CustomJsonFormatter(jsonlogger.JsonFormatter):
    def add_fields(self, log_record, record, message_dict):
        super(CustomJsonFormatter, self).add_fields(log_record, record, message_dict)
        log_record['level'] = log_record['levelname']
        del log_record['levelname']

然后替换 pythonjsonlogger.jsonlogger.JsonFormatter 地址是 CustomJsonFormatter .