首页 文章

Google App Engine / Python - 更改日志记录格式

提问于
浏览
7

如何更改Google App Engine中 logging 模块的输出格式?

我试过了,例如:

log_format = "* %(asctime)s %(levelname)-8s %(message)s"
  date_format = "%a, %d %b %Y %H:%M:%S"

  console = logging.StreamHandler()
  fr = logging.Formatter(log_format)
  console.setFormatter(fr)

  logger = logging.getLogger()
  logger.addFilter(SuperfluousFilter())
  logger.addHandler(console)

  logger.setLevel(logging.DEBUG)
  console.setLevel(logging.DEBUG)

  logging.error("Reconfiguring logging")

但是,这会导致重复的日志记录输出:一个来自google/appengine/tools/dev_appserver.py(或Google代码中的某个位置)的日志记录处理程序,另一个来自我上面的新 StreamHandler . 以上代码输出:

ERROR    2010-06-23 20:46:18,871 initialize.py:38] Reconfiguring logging
2010-06-23 20:46:18,871 ERROR    Reconfiguring logging

顶行显然来自 dev_appserver.py ,来自我的代码的底线 .

所以我想推论的问题是:如何更改Google App Engine的格式,同时避免重复输出?

谢谢你的阅读 .

布赖恩

1 回答

  • 11

    以下是一种可以在不重复输出的情况下更改日志记录格式的方法:

    # directly access the default handler and set its format directly
    logging.getLogger().handlers[0].setFormatter(fr)
    

    这有点像黑客,因为您必须直接访问存储在根 Logger 中的 handlers 列表 . 问题是GAE在您的代码运行之前自动使用 logging - 这会创建一个默认处理程序 . 不幸的是,我没有看到如何在不直接访问 handlers 列表的情况下获得对此处理程序的引用 .

相关问题