8.5 日志
Logging模块提供了一些功能全面和灵活的日志系统。最简单的形式就是把日志信息发送到一个文件或sys.stderr;
import logging
logging.debug(’Debugging information’)
logging.info(’Informational message’)
logging.warning(’Warning:config file %s not found’, ’server.conf’)
logging.error(’Error occurred’)
logging.critical(’Critical error -- shutting down’)
上面将会产生例如以下输出:
WARNING:root:Warning:config file server.conf not found
ERROR:root:Error occurred
CRITICAL:root:Critical error -- shutting down
默认的,提示信息和调试信息都会被捕获,而且把输出发送到标准错误。
其它输出可选项包含通过邮件路由信息。数据报,套接字或到一个httpserver。新的过滤选择基于信息优先级不同的路由:Debug, info。warning,error和critical.
日志系统能够通过paython直接配置或者通过用户可编辑的配置文件进行载入。从而实现不改动应用程序而定制日志。
8.6 弱引用
Python能够实现自己主动内存管理(对大多对象的引用计数并为消除循环引用做garbage collection).在最后一次对对象引用消除后,内存稍后就会释放。
这样的方法在大多程序中执行良好。可是偶尔也须要在对象被其它东西使用时追踪对象。不幸的,只为跟踪他们而创建的引用会使持久存在。
Weakref模块提供一些跟踪对象而不须要创建引用的工具。当对象不再须要时,它会自己主动从weakref表中自己主动移除。而且一个针对wakref对象的回滚事务就会触发。典型的应用的创建都是昂贵的。包含缓存对象。