记录器的奇怪行为
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)
遇到这样的问题,无法解决。我使用 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)