54 lines
1.5 KiB
Python
54 lines
1.5 KiB
Python
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"
|