rep1/python37/Lib/site-packages/cn2an/utils.py

54 lines
1.5 KiB
Python
Raw Normal View History

2024-11-21 09:00:42 +08:00
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"