有这样一个注册功能logger
import logging
def register_logger(
base_path: PathLike[str],
file_name: str,
register_name: str | None,
log_level: Any,
) -> logging.Logger:
path = Path(base_path, f"{file_name}.log")
logger = logging.getLogger(register_name)
logger.setLevel(level=log_level)
handler = logging.FileHandler(path, encoding="utf8")
formatter = logging.Formatter("\n%(asctime)s - %(levelname)s\n%(message)s")
handler.setFormatter(formatter)
logger.addHandler(handler)
return logger
您需要注册两个处理程序:一个未命名,第二个有名称。按照惯例,它看起来像这样:
logger = register_logger(path, "server", None, 1)
logger_web = register_logger(path, "web", "web", 1)
# И допустим в другом файле
logger_web = logging.getLogger("web")
但是,当您尝试使用 时logger_web.error(...)
,后者会重复两个文件中的条目。与此同时,无名者logger
只写入自己的文件.../path/server.log
。
这里可能出了什么问题,如何避免重复条目?