封装一层日志 helper 后,日志默认显示的是 helper 那一行,排查调用方不太方便。Python 3.8+ 可以把 stacklevel 往上调:
import logging
logging.basicConfig(
level=logging.INFO,
format="%(levelname)s %(filename)s:%(lineno)d %(message)s",
)
log = logging.getLogger(__name__)
def notice(message):
log.info(message, stacklevel=2)
def load_config():
notice("loading config")
load_config()
这样记录的文件和行号会指向 load_config,而不是 notice。如果 helper 外面还有一层封装,就按实际调用栈把数值再加上去。环境:Python 3.8+,只用标准库 logging。