ydf0509 / nb_log

pip install nb_log 各种日志handler和自动转化项目的任意print的效果。日志自动彩色炫酷,可点击控制台的日志自动精确跳转到pycharm的文件和行号。文件日志多进程切割安全。在10个最重要方面全方位超过loguru
375 stars 72 forks source link

多模块与多实例之间的疑问 #35

Closed kuozhijishou closed 1 year ago

kuozhijishou commented 1 year ago

如果记录到不同日志文件通过多实例来控制 那么定义的实例如何跨模块使用呢?还得在另外的模块中import这个实例吗?

ydf0509 commented 1 year ago

文中反复强调日志的命名空间了啊。原生日志的 logging.getLogger(name) 中的name入参代表什么?那你肯定不清楚了。主要是你不懂原生日志。这和nblog毫无关系。

a.py 写 import logging loggera = logging.getLogger('namex') print(id(loggera))

b.py 写 import logging loggerb = logging.getLogger('namex')
print(id(loggerb))

c.py写 import a import b 你可以发现 loggera 和loggerb的打印的id是一样的。因为他们的getLogger入参第一个参数是一样的叫namex。

所以你想用 namex 的命名空间logger,你可以import 别的模块的logger对象,也可以自己重新get_logger生成日志。 就算你无数次getLogger同一个命名空间生成logger对象,他们都是相等的。你看python logging内置包就知道了。 这知识点和nb_log毫无关系,是你的python日志基础不扎实。

所以你在b.py 可以 import loggera对象,也可以自己生成新的logger对象,只要命名空间还是namex,他们就是同一个logger对象懂了吗。

kuozhijishou commented 1 year ago

确实如此,是我学艺不精,很感谢!