我在log_conf.py中定义了一个自定义格式化程序。
# log_conf.py
class Custom(jsonlogger.JsonFormatter):
def add_fields(self, log_record, record, message_dict):
super().add_fields(log_record, record, message_dict)
log_record["new_field"] = log_record["levelname"]
logging.config.fileConfig(file_path)
def get_logger(name):
return logging.getLogger(name)
在我的logger.ini文件中,我这样引用它:
....
[formatter_json]
class = log_conf.Custom
如果我将log_conf.py和logger.ini放入正在使用它的同一模块中,则可以工作:
from my_project.my_module import log_conf
log = log_conf.get_logger(__name__)
但我想把它放在一个不同的文件夹中,如下所示:
my_project
main.py
my_module/
stuff.py
myconf/
logger.ini
log_conf.py
如果我使用这种结构
from my_project.myconf import log_conf
我明白了
ModuleNotFoundError: No module named 'log_conf'
.
如果我将ini文件更改为
class = myconf.log_conf.Custom
它仍然找不到它。
如果我将其更改为
class = my_project.myconf.log_conf.Custom
我明白了
AttributeError: cannot access submodule 'log_config' of module 'my_project.myconf' (most likely due to a circular import)
.
为什么当它们在模块的目录中时它能工作,并且当使用的Custom类的完整命名空间时抛出循环导入
class=
?