def configure_logger(
name: Optional[str] = "SaigeResearch",
level: str = "INFO",
formatter: str = f"%(asctime)s %(levelname)s [%(filename)s:%(lineno)d] %(message)s",
path: Optional[str] = None,
stdout: bool = False,
):
logger = logging.getLogger(name)
logger.setLevel(level)
logger.propagate = False
logger.handlers = []
if path is not None:
handler = logging.FileHandler(path, mode="a")
handler.setFormatter(logging.Formatter(formatter))
logger.addHandler(handler)
if stdout:
handler = logging.StreamHandler(sys.stdout)
handler.setFormatter(logging.Formatter(formatter))
logger.addHandler(handler)
return logger