帮助Python代码

时间:2010-07-21 19:28:18

标签: python logging web2py

我需要一些帮助来了解这里发生的事情。此代码来自web2py中的models/log.py模块,旨在允许全局日志记录。

def _init_log(): 
    logger=logging.getLogger(request.application) 
    ...
    return logger 

logging=cache.ram('mylog',lambda:_init_log(),time_expire=99999999)

有人可以解释这可能会如何起作用,以及最后一行是做什么的?

谢谢 -

2 个答案:

答案 0 :(得分:2)

这不是标准的web2py文件。 Sombody写了它,但我可以看到它的作用: 在web2py中,单个安装可以运行多个应用程序。一些用户希望在同一web2py下运行的不同应用程序具有单独的日志,因此他们需要不同的记录器对象。在web2py中没有全局设置,并且所有用户代码都在每个请求上执行,因此为了避免在每次请求时重新创建记录器,记录器对象只创建一个并存储在具有大到期时间的缓存中999 ... 9 。当http请求到达时,如果需要记录,它会在缓存中找到记录器。查看cache.ram的文档。

我使用过这个技巧但从未用于记录。

答案 1 :(得分:1)

我认为它的作用是记录功能是“memoized”。这意味着如果连续多次使用相同的参数调用它,它将从其缓存中返回旧结果。

它可能基于plone.memoize模块,但我无法检查,因为该链接对我不起作用。