禁用Appstats日志记录

4 投票
3 回答
753 浏览
提问于 2025-04-16 07:46

我正在使用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 个回答

2

这里是Appstats的作者。你为什么想要关闭日志记录呢?我并不是说你不应该这么做,只是我对你想关闭它感到有些惊讶,因为我不太明白你的理由。如果这是一个合理的使用场景,我们可以考虑加一个设置选项来关闭它。

6

如果有人感兴趣的话,我来分享一下我是怎么根据罗伯特的建议去掉日志记录的。

通常插入应用统计信息的方法是这样的:

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() 函数“忽略所有异常”的行为,但去掉了周围的所有日志记录。

6

你可以看看这个示例的appstats配置文件。你可以设置appstats只在一部分请求中运行;这样可以减少日志信息的数量,但你仍然能获取到需要的信息。

如果你想修改appstats,可以查看303行的内容,文件路径是/google/appengine/ext/appstats/recording.py。如果你使用的是webapp,直接用它的_save方法替换掉save方法就很简单,这种做法叫做猴子补丁

另外,可以提交一个功能请求,并把链接发到相关的讨论组。我觉得能禁用日志记录的功能是个合理的请求,因为这些日志信息确实会让日志变得有点杂乱。

撰写回答