禁用Appstats日志记录
我正在使用Appstats,具体的使用方法可以在这里找到:
http://code.google.com/appengine/docs/python/tools/appstats.html
这个工具运行得很好,但每次请求都会记录一条信息,内容大致是这样的:
已保存;键:appstats:039300,部分:65字节,完整:12926字节,开销:0.000 + 0.004;链接:http://example.com/stats/details?time=1290733239309
有没有办法在不关闭Appstats的情况下,禁用这些日志消息呢?
也许我可以自己复制一份ext/appstats/recording.py文件,然后把logging.info()的调用注释掉?或者有没有更好的办法?
谢谢。
3 个回答
这里是Appstats的作者。你为什么想要关闭日志记录呢?我并不是说你不应该这么做,只是我对你想关闭它感到有些惊讶,因为我不太明白你的理由。如果这是一个合理的使用场景,我们可以考虑加一个设置选项来关闭它。
如果有人感兴趣的话,我来分享一下我是怎么根据罗伯特的建议去掉日志记录的。
通常插入应用统计信息的方法是这样的:
def webapp_add_wsgi_middleware(app):
from google.appengine.ext.appstats import recording
app = recording.appstats_wsgi_middleware(app)
return app
而我做的是这个:
def webapp_add_wsgi_middleware(app):
from google.appengine.ext.appstats import recording
def save(self):
try:
self._save()
except Exception:
pass
recording.Recorder.save = save
app = recording.appstats_wsgi_middleware(app)
return app
这样做保留了原来的 save() 函数“忽略所有异常”的行为,但去掉了周围的所有日志记录。
你可以看看这个示例的appstats配置文件。你可以设置appstats只在一部分请求中运行;这样可以减少日志信息的数量,但你仍然能获取到需要的信息。
如果你想修改appstats,可以查看303行的内容,文件路径是/google/appengine/ext/appstats/recording.py
。如果你使用的是webapp,直接用它的_save方法替换掉save方法就很简单,这种做法叫做猴子补丁。
另外,可以提交一个功能请求,并把链接发到相关的讨论组。我觉得能禁用日志记录的功能是个合理的请求,因为这些日志信息确实会让日志变得有点杂乱。