我想创建一致的日志,以便我可以计算每个龙卷风请求的统计信息,我有如下请求:
@tornado.web.asynchronous
def post(self):
try:
process_id = uuid.uuid4()
logging.info("Incoming request (process_id: %s) to %s" % (str(process_id), self.__class__.__name__))
当请求进入时会打印一些信息,但请求在龙卷风代码中完成,只会打印出来:
[I 150331 10:55:09 web:1728] 200 POST /transform (127.0.0.1) 3017.19ms
有没有办法将我的进程ID传递给龙卷风(或让它创建一个),以便我可以连接请求的第一个和最后一个日志事件?
感谢,
答案 0 :(得分:0)
通常,记录此类内容的最佳方法是将其附加到RequestHandler实例。对于日志记录,您可以覆盖有权访问处理程序的Application.log_request。如果需要在多个位置使用它,则可能需要将请求ID或RequestHandler实例传递给代码的其他部分。
如果你真的需要这种普遍存在的话,将StackContext用作类似threading.Local
的东西是可能但很棘手,但明确传递它可能是最好的。