| import time | |
| import pathlib | |
| import logging | |
| from pkg_resources import resource_stream | |
| from ruamel.yaml import YAML | |
| yaml = YAML() | |
| def get_default_conf(stream_args: list = None) -> dict: | |
| if stream_args is None: | |
| stream_args = ["cn2an", "config.yaml"] | |
| with resource_stream(*stream_args) as stream: | |
| return yaml.load(stream) | |
| def get_logger(name: str = "cn2an", level: str = "info") -> logging.Logger: | |
| logger = logging.getLogger(name) | |
| level_dict = { | |
| "debug": logging.DEBUG, | |
| "info": logging.INFO, | |
| "warning": logging.WARNING, | |
| "error": logging.ERROR, | |
| "critical": logging.CRITICAL | |
| } | |
| logger.setLevel(level_dict[level]) | |
| if not logger.handlers: | |
| log_path = log_path_util() | |
| fh = logging.FileHandler(log_path) | |
| fh.setLevel(logging.INFO) | |
| fh_fmt = logging.Formatter("%(asctime)-15s %(filename)s %(levelname)s %(lineno)d: %(message)s") | |
| fh.setFormatter(fh_fmt) | |
| console = logging.StreamHandler() | |
| console.setLevel(logging.DEBUG) | |
| console_fmt = logging.Formatter("%(filename)s %(levelname)s %(lineno)d: %(message)s") | |
| console.setFormatter(console_fmt) | |
| logger.addHandler(fh) | |
| logger.addHandler(console) | |
| return logger | |
| def log_path_util(name: str = "cn2an") -> str: | |
| day = time.strftime("%Y-%m-%d", time.localtime()) | |
| log_path = pathlib.Path(f"./log/{day}") | |
| if not log_path.exists(): | |
| log_path.mkdir(parents=True) | |
| return f"{str(log_path)}/{name}.log" | |