【问题标题】:logging.fileConfig() acting weird on Google app enginelogging.fileConfig() 在谷歌应用引擎上表现得很奇怪
【发布时间】:2012-10-23 18:21:52
【问题描述】:

我在 Google 应用引擎上有一个简单的 webapp2 应用。这是代码

# log.py.........................................................................
logging_defaults = {
    'loglevel': 'DEBUG',
}
logging_config = """\
[loggers]
keys=root

[handlers]
keys=stderr

[formatters]
keys=default

[logger_root]
level=%(loglevel)s
handlers=stderr

[handler_stderr]
class=StreamHandler
level=NOTSET
formatter=default
args=(sys.stderr, )

[formatter_default]
format=%(asctime)s %(levelname)s %(name)s:%(lineno)d %(message)s
datefmt=
"""

import logging
import logging.config
import logging.handlers
from cStringIO import StringIO
config_file = StringIO(logging_config)
logging.config.fileConfig(config_file, logging_defaults)
l = logging.getLogger(__name__)

# helloworld.py......................................................

import webapp2
from log import l

class MainPage(webapp2.RequestHandler):
  def get(self):
      l.debug('debug message')
      l.info('info message')
      l.warn('warn message')
      l.error('error message')
      l.critical('critical message')
      self.response.headers['Content-Type'] = 'text/plain'
      self.response.write("hello me!! It's me here ;)")

app = webapp2.WSGIApplication([('/', MainPage)],
                              debug=True)

这是应用引擎仪表板中生成的日志的屏幕截图

如您所见,日志显示正常,但每个日志都标有“E”,即使它不是错误,也表示错误。据我所知,每次使用时都会发生这种情况

logging.config.fileConfig()

这个问题有解决办法吗?

PS:我知道还有其他方法可以配置日志记录。但我只要求 fileConfig()。

更新:我尝试使用 fileConfig() 从真实文件加载并使用 dictConfig() 但每次问题仍然存在。

【问题讨论】:

    标签: python google-app-engine logging


    【解决方案1】:

    我怀疑你的问题的原因是这样的:

    [formatter_default]
    format=%(asctime)s %(levelname)s %(name)s:%(lineno)d %(message)s
    

    这与 App Engine 的默认日志格式不同,后者将级别放在首位,然后是日期时间。因此,App Engine 管理控制台无法解析您的日志消息以确定每个日志条目的级别,因此默认为错误。反转%(asctime)s%(levelname)s 参数,它应该可以正常工作。

    【讨论】:

    • 它似乎仍然不起作用。我什至尝试设置format=%(levelname)s 仍然没有成功。看看i.imgur.com/sjOgm.png
    • 我怀疑这仍然是格式问题。您需要检查 App Engine 应用默认输出的内容并进行模仿 - 或者更好的是,首先不要修改日志格式。
    【解决方案2】:

    我最近遇到了同样的问题, 使用google.appengine.api.app_logging.AppLogsHandler 而不是StreamHandler 为我解决这个问题。

    【讨论】:

      猜你喜欢
      • 2012-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-14
      • 2013-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多