记录器的奇怪行为

strange behavior of logger

遇到这样的问题,无法解决。我使用 python 的记录器来记录信息,记录器级别设置为 logging.DEBUG。我用 gunicorn 登录 同时信息。通常,错误信息会进入python的记录器,link信息和其他由logger.info或logger.debug写入的信息会进入gunicorn的日志文件。但是,对于一个应用程序,它的行为并非如此。 logger.info 输出的消息也转到 python 的记录器。问题是,我只想在 python 的记录器中看到错误消息,所有其他消息都可以从 gunicorn 的记录器中看到。谁能告诉我在这种情况下我可能哪里做错了?

提前谢谢, 亚历克斯

以下是我的配置:

LOGGER_LEVEL = logging.DEBUG  
LOGGER_ROOT_NAME = "root"  
LOGGER_ROOT_HANLDERS = [logging.StreamHandler, logging.FileHandler]  
LOGGER_ROOT_LEVEL = LOGGER_LEVEL  
LOGGER_ROOT_FORMAT = "[%(asctime)s %(levelname)s %(name)s %(funcName)s:%(lineno)d] %(message)s"  
LOGGER_LEVEL = logging.ERROR  
LOGGER_FILE_PATH = "/data/log/web/"  

代码:

def config_root_logger(self):
    formatter = logging.Formatter(self.config.LOGGER_ROOT_FORMAT)

    logger = logging.getLogger()
    logger.setLevel(self.config.LOGGER_ROOT_LEVEL)

    filename = os.path.join(self.config.LOGGER_FILE_PATH, "secondordersrv.log")
    handler = logging.FileHandler(filename)
    handler.setFormatter(formatter)
    logger.addHandler(handler)

    # 测试环境配置再增加console的日志记录
    self._add_test_handler(logger, formatter)

def _add_test_handler(self, logger, formatter):
    # 测试环境配置再增加console的日志记录
    if self.config.RUN_MODE == 'test':
        handler = logging.StreamHandler()
        handler.setFormatter(formatter)
        logger.addHandler(handler)

我的 gunicorn 配置如下所示:

errorlog = '/data/log/web/%s.log' % APP_NAME  
loglevel = 'info'  
accesslog = '-'

您没有设置处理程序的级别。

handler.setFormatter(formatter)之后添加以下行:

handler.setLevel(self.config.LOGGER_LEVEL)