File size: 1,492 Bytes
acd7cf4
b9d49bb
 
 
acd7cf4
 
 
 
b9d49bb
 
0b9d8c7
 
b9d49bb
 
 
 
 
 
acd7cf4
b9d49bb
 
acd7cf4
b9d49bb
 
acd7cf4
0b9d8c7
 
 
b9d49bb
acd7cf4
b9d49bb
 
 
 
0b9d8c7
 
 
b9d49bb
 
 
 
 
 
 
 
 
0b9d8c7
b9d49bb
 
 
 
 
 
 
acd7cf4
 
 
b9d49bb
acd7cf4
 
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
54
55
56
57
58
59
60
61
import logging
from logging.handlers import RotatingFileHandler

from rich.logging import RichHandler

logger = logging.getLogger("graphgen")


def set_logger(
    log_file: str,
    file_level: int = logging.DEBUG,
    console_level: int = logging.INFO,
    *,
    if_stream: bool = True,
    max_bytes: int = 50 * 1024 * 1024,  # 50 MB
    backup_count: int = 5,
    force: bool = False,
):

    if logger.hasHandlers() and not force:
        return

    if force:
        logger.handlers.clear()

    logger.setLevel(
        min(file_level, console_level)
    )  # Set to the lowest level to capture all logs
    logger.propagate = False

    if logger.handlers:
        logger.handlers.clear()

    if if_stream:
        console = RichHandler(
            level=console_level, show_path=False, rich_tracebacks=True
        )
        console.setFormatter(logging.Formatter("%(message)s"))
        logger.addHandler(console)

    file_handler = RotatingFileHandler(
        log_file,
        maxBytes=max_bytes,
        backupCount=backup_count,
        encoding="utf-8",
    )
    file_handler.setLevel(file_level)
    file_handler.setFormatter(
        logging.Formatter(
            "[%(asctime)s] %(levelname)s [%(name)s:%(filename)s:%(lineno)d] %(message)s",
            datefmt="%y-%m-%d %H:%M:%S",
        )
    )
    logger.addHandler(file_handler)


def parse_log(log_file: str):
    with open(log_file, "r", encoding="utf-8") as f:
        lines = f.readlines()
    return lines