summaryrefslogtreecommitdiff
path: root/src/utils/log_util_worklogger.py
blob: 9fdbd6a6710312d7b4d8c5e7e491d4fc840d29be (plain)
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
62
63
64
#!/opt/homebrew/bin/python3
"""
LOGGER SETUP FILE FOR WORKLOGGER
author: Wacky404 <wacky404@dev.com>
"""

import logging.config
import atexit


logger = logging.getLogger("WorkLogger")


def setup_logging(log_lvl_stdout='WARNING') -> None:
    logging_config: dict = {
        "version": 1,
        "disable_existing_loggers": False,
        "formatters": {
            "simple": {
                "format": "%(levelname)s: %(message)s",
            },
            "detailed": {
                "format": "[%(levelname)s|%(module)s|L%(lineno)d] %(asctime)s: %(message)s",
                "datefmt": "%Y-%m-%dT%H:%M:%S%z",
            },
        },
        "handlers": {
            "stdout": {
                "class": "logging.StreamHandler",
                "level": log_lvl_stdout,
                "formatter": "simple",
                "stream": "ext://sys.stdout",
            },
            "file": {
                "class": "logging.handlers.RotatingFileHandler",
                "level": "DEBUG",
                "formatter": "detailed",
                "filename": "logs/WorkLogger.log",
                "maxBytes": 5000000,  # 5 mb
                "backupCount": 5,
            },
            "queue_handler": {
                "class": "logging.handlers.QueueHandler",
                "handlers": [
                    "stdout",
                    "file"
                ],
                "respect_handler_level": True
            }
        },
        "loggers": {
            "root": {
                "level": "DEBUG",
                "handlers": [
                    "queue_handler"
                ],
            },
        },
    }
    logging.config.dictConfig(logging_config)
    queue_handler = logging.getHandlerByName("queue_handler")
    if queue_handler is not None:
        queue_handler.listener.start()
        atexit.register(queue_handler.listener.stop)