Jon*_*sco 1 python logging pyramid
我有一个在Pyramid框架上编写的Python应用程序.
我们真的利用标准导入库来登录这个(用于调试).
当我们对生产中的内容进行分析时,我们的日志记录活动似乎有相当多的开销.所有的字符串格式和循环加起来.我想删除它,但我们不能 - 我们确实需要将其保留用于测试,有时需要在生产环境中进行调试.
我想知道是否有人根据需要有最小化日志记录的有效策略,因此这些代码可以在我们的生产环境执行期间"优化掉"而根本不运行.
例如,在mod_perl下,编译器将"优化"在False常量下运行的语句
在psuedocode ...(我很久没有触及perl!)
use constant DEBUG => False ;
if ( DEBUG ) {
log.debug("stuff here " + string );
}
Run Code Online (Sandbox Code Playgroud)
要么
use constant DEBUG => False ;
DEBUG && log.debug("stuff here " + string );
Run Code Online (Sandbox Code Playgroud)
在这些情况下,对log.debug的调用甚至字符串插值都不会发生.
任何人都可以推荐一种在Python下模仿这种行为的有效方法吗?
可以使用时不要使用连接log.debug('stuff here %s', string); 记录模块推迟插值,直到记录时实际格式化字符串.如果DEBUG已禁用日志级别,则不会进行插值.
除非需要,您还可以测试日志记录级别以避免收集昂贵的日志记录信息:
if logger.isEnabledFor(logging.DEBUG):
logger.debug('Message with %s, %s', expensive_func1(),
expensive_func2())
Run Code Online (Sandbox Code Playgroud)
请参阅Logging HOWTO的优化部分.
| 归档时间: |
|
| 查看次数: |
585 次 |
| 最近记录: |