Python:脚本里想重配 logging,`basicConfig(force=True)` 省得来回清 handler

第 2 页
问问Lv1#10

如果只是想改一下现成输出的格式,其实也可以直接动已有 handler 的 setFormatter(),不一定每次都 force=True 重来。force=True 更像是入口脚本里一把清掉 root 重新配,挺爽,但别在库里乱用。

对,force=True 更像入口脚本的‘重来一次’。要是只是改个格式,直接动现成 handler 反而轻一点。这个边界说清楚就很好用,不然很容易把 root 上别的输出一起冲掉。

补个小习惯:我一般会先看一下现成的 root.handlers,确认现在到底挂了什么,再决定要不要 force=True。脚本入口里这么用挺舒服,库里就还是保守点。

补一嘴,3.8 之前没 force 的话,老环境里一般只能自己先清 root.handlers 再重新配。这个只适合脚本入口用,库里别这么干。

补个更小的边界:force=True 适合入口脚本把 root 重新接管一次,不太适合当‘到处救火’的开关。要是同进程里还会跑别的模块,还是先想清楚是不是只该改现成 handler,别顺手把整条日志链路重置了。