import logging as log log.basicConfig(level=log.INFO, format=('[%(asctime)s] %(message)s'), datefmt='%m-%d %H:%M:%S')
from config import * def func(): log.info('info') log.debug('debug') if __name__ == '__main__': log.getLogger().setLevel(log.DEBUG) func()
说明
- 以前都是每个文件导入一次 log 模块,或者一次导入然后各处改,今天刚学到了setLevel这个用法。(也不知道之前中了什么邪就没搜到过这个)
- 这样各个模块测试的时候就可以用 debug,到了主程序设一次 info,或者 config 直接设 info 就好了。
- 之前犯过的错误,config 里不做 basicConfig,但好像默认还是设了 warning。然后我傻傻地到 func 里再设一次,其实完全无效。
- 还用过一个方法是把所有 handler 抹掉,然后再设一遍,但这样比较罗嗦,格式啥的都要再复制一遍。
[log.root.removeHandler(handler) for handler in log.root.handlers[:]] log.basicConfig(level=xxxx, format=xxxx, datefmt=xxxx)
- 分享顺便记录一下。高手见笑,如果有更好的方法欢迎指教。