当前位置: 首页 > 知识库问答 >
问题:

记录员的奇怪行为

卢翔宇
2023-03-14

我遇到了这样的问题,解决不了。我使用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 = '-'

共有1个答案

曾歌者
2023-03-14

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

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

handler.setLevel(self.config.LOGGER_LEVEL)
 类似资料:
  • 我正在这样的控制器上播放视频: 即使在控制器被销毁并且不再使用之后,我每秒钟左右都会收到这条日志消息: 我不是在问如何隐藏这些日志。我知道如何通过将

  • 我有以下代码来解析一个JSON文件: 要处理以下JSON文件: 如果我执行此代码,我将收到以下错误: 所以我开始一步一步地调试应用程序,看看part processing()中的哪个代码部分抛出了这个异常。令人惊讶的是,那里的所有代码都正常执行:没有抛出异常,也没有返回结果I except。 更让我惊讶的是,当我稍微改变第一种方法的代码时,它可以在不产生异常的情况下工作。 我不知道println方

  • 当我第一次使用谷歌帐户登录,然后使用帐户登录时,Firbase返回“ERROR _ Account _ EXISTS _ WITH _ DIFFERENT _ CREDENTIAL ”,这是正确的,因为我从firebase控制台禁用了签署多凭据选项。 当我第一次使用帐户登录时出现问题。提供商是正确的,UserInfo显示facebook用户帐户信息。但是电子邮件没有被验证。 当我登录谷歌账户时,出

  • 我使用StringTokenizer将字符串分成标记,但是每当出现在中间而没有任何时,就跳过它并取下一个标记 实际产出 想要的Outupt

  • 问题内容: 我在GregorianCalendar类中遇到一个奇怪的行为,我想知道我是否真的做得不好。 仅当初始化日期的月份的实际Maximum大于我将日历设置为的月份时,才追加此值。 这是示例代码: 我知道问题是由于日历初始化日期是31天(可能是5月),与设置为2月(28天)的月份混淆了。修复很容易(只需在设置年和月之前将day_of_month设置为1),但是我想知道这确实是想要的行为。有什么

  • 问题内容: 我正在为一个问题而苦苦挣扎,我不明白为什么它不起作用。如何通过将变量传递并转换为? 为什么在顶部代码段中不起作用,但在行下方的底部代码段中起作用? 唯一的区别似乎是添加了一个额外的变量,该变量也被键入为? 问题答案: 该是一种原始类型,同时是一个普通的Java类。您不能在原始类型上调用方法。但是该方法在上可用,如javadoc中所示 有关这些原始类型的更多信息,请参见此处