52 lines
1.5 KiB
Python
52 lines
1.5 KiB
Python
import logging
|
|
|
|
import pathlib
|
|
import sys
|
|
|
|
from typing import Callable
|
|
from functools import wraps
|
|
|
|
###########################################################
|
|
# logging #
|
|
###########################################################
|
|
logFormatter = logging.Formatter(
|
|
"%(asctime)s %(levelname)-5.5s [%(name)s] %(funcName)s:%(lineno)d: %(message)s"
|
|
)
|
|
logger = logging.getLogger()
|
|
logger.setLevel(logging.DEBUG)
|
|
logger.name = "DNFCalculating"
|
|
|
|
log_directory = "logs"
|
|
try:
|
|
pathlib.Path(log_directory).mkdir(parents=True, exist_ok=True)
|
|
except PermissionError as err:
|
|
print("创建日志目录logs失败,请确认是否限制了基础的运行权限")
|
|
sys.exit(-1)
|
|
|
|
|
|
def try_except(show_exception_info=True,
|
|
show_last_process_result=True,
|
|
extra_msg="",
|
|
return_val_on_except=None) -> Callable:
|
|
def decorator(fun):
|
|
@wraps(fun)
|
|
def wrapper(*args, **kwargs):
|
|
try:
|
|
return fun(*args, **kwargs)
|
|
except Exception as e:
|
|
msg = f"执行{fun.__name__}({args}, {kwargs})出错了"
|
|
if extra_msg != "":
|
|
msg += ", " + extra_msg
|
|
# msg += check_some_exception(e, show_last_process_result)
|
|
|
|
logFunc = logger.error
|
|
if not show_exception_info:
|
|
logFunc = logger.debug
|
|
logFunc(msg, exc_info=e)
|
|
|
|
return return_val_on_except
|
|
|
|
return wrapper
|
|
|
|
return decorator
|