在Python的Log Formatter中添加自定义字段

时间:2018-10-29 06:51:51

标签: python python-3.x logging

所以我有一个在模块中定义的函数:

import logging
formatter = logging.Formatter('%(clientname)|%(asctime)s|%(message)s',"%Y-%m-%d %H:%M:%S")


def setup_logger(name, log_file, level=logging.INFO):

    handler = logging.FileHandler(log_file, mode='a')        
    handler.setFormatter(formatter)

    logger = logging.getLogger(name)
    logger.setLevel(level)
    logger.addHandler(handler)

    return logger

我想在登录时添加客户端名称。现在,我的是一个Flask应用程序,它跨越了许多模块,因此我已经定义了该记录器。我使用getLogger获取其他模块的日志。在主烧瓶应用程序即server.py中,我将记录器定义为:

info_logger = logger.setup_logger('info_logger', LOG_DIR + "status_log.csv")

然后我有一个循环遍历多个客户端的循环。每当循环开始时,我都会重新定义记录器:

info_logger = logging.LoggerAdapter(info_logger, {'clientname':configData[obj]["client_name"]})

但这给了我错误:

  1. ValueError:不支持的格式字符'|'
  2. AttributeError:“ LoggerAdapter”对象没有属性“ manager”
  3. KeyError:“客户端名称”

我一直在寻找适当的方法来做到这一点。我已阅读并遵循了文档,但无济于事。

0 个答案:

没有答案