File size: 1,253 Bytes
a5fd608
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import logging
from functools import wraps


def get_logger(name: str, filepath: str = None):
    logger = logging.getLogger(name)
    logger.setLevel(logging.INFO)

    # 控制台
    console_handler = logging.StreamHandler()
    logger.addHandler(console_handler)

    # 文件
    if filepath:
        file_handler = logging.FileHandler(filepath)
        logger.addHandler(file_handler)

    return logger


def log(enter_message: str = "", exit_message: str = ""):
    return _Log(enter_message=enter_message, exit_message=exit_message)


class _Log:
    def __init__(
        self,
        enter_message: str = "",
        exit_message: str = ""
    ):
        self.enter_message = enter_message
        self.exit_message = exit_message

    def __enter__(self):
        if self.enter_message:
            print(self.enter_message)
        return self

    def __exit__(self, exc_type, exc, tb):
        if self.exit_message:
            print(self.exit_message)
        print("")
        return False

    def __call__(self, func):
        @wraps(func)
        def wrapper(*args, **kwargs):
            with _Log(self.enter_message, self.exit_message):
                return func(*args, **kwargs)
            return None

        return wrapper