Edit on GitHub

src.parser

 1import argparse
 2import logging
 3
 4# Настройка логгирования
 5logger = logging.getLogger()
 6sql_logger = logging.getLogger("sqlalchemy.engine.Engine")
 7sched_logger = logging.getLogger("apscheduler")
 8
 9
10def parse_args():
11    """Парсинг аргументов командной строки.
12
13    Создает парсер аргументов и обрабатывает входные параметры для
14    настройки логирования. Поддерживаются следующие параметры:
15
16    - `--nolog`: Опции для отключения логирования:
17        - `all`: Отключает все логирование.
18        - `file`: Отключает логирование в файл.
19        - `console`: Отключает логирование в консоль.
20
21    Returns:
22        argparse.Namespace: Объект с аргументами, переданными через командную строку.
23    """
24    parser = argparse.ArgumentParser(
25        prog="DanVPN Bot",
26        description="Wireguard config manager",
27        epilog="DanVPN bot start script",
28    )
29
30    parser.add_argument(
31        "--nolog",
32        nargs="?",
33        const="all",
34        choices=["file", "console", "all"],
35        help="Unable log",
36    )
37
38    args = parser.parse_args()
39
40    match args.nolog:
41        case "all":
42            logging.disable()
43        case "file":
44            logger.removeHandler(logger.handlers[1])
45            sql_logger.removeHandler(sql_logger.handlers[1])
46            sched_logger.removeHandler(sched_logger.handlers[1])
47        case "console":
48            logger.removeHandler(logger.handlers[0])
49            sql_logger.removeHandler(sql_logger.handlers[0])
50        case _:
51            pass
52
53    return args
logger = <RootLogger root (DEBUG)>
sql_logger = <Logger sqlalchemy.engine.Engine (INFO)>
sched_logger = <Logger apscheduler (INFO)>
def parse_args():
11def parse_args():
12    """Парсинг аргументов командной строки.
13
14    Создает парсер аргументов и обрабатывает входные параметры для
15    настройки логирования. Поддерживаются следующие параметры:
16
17    - `--nolog`: Опции для отключения логирования:
18        - `all`: Отключает все логирование.
19        - `file`: Отключает логирование в файл.
20        - `console`: Отключает логирование в консоль.
21
22    Returns:
23        argparse.Namespace: Объект с аргументами, переданными через командную строку.
24    """
25    parser = argparse.ArgumentParser(
26        prog="DanVPN Bot",
27        description="Wireguard config manager",
28        epilog="DanVPN bot start script",
29    )
30
31    parser.add_argument(
32        "--nolog",
33        nargs="?",
34        const="all",
35        choices=["file", "console", "all"],
36        help="Unable log",
37    )
38
39    args = parser.parse_args()
40
41    match args.nolog:
42        case "all":
43            logging.disable()
44        case "file":
45            logger.removeHandler(logger.handlers[1])
46            sql_logger.removeHandler(sql_logger.handlers[1])
47            sched_logger.removeHandler(sched_logger.handlers[1])
48        case "console":
49            logger.removeHandler(logger.handlers[0])
50            sql_logger.removeHandler(sql_logger.handlers[0])
51        case _:
52            pass
53
54    return args

Парсинг аргументов командной строки.

Создает парсер аргументов и обрабатывает входные параметры для настройки логирования. Поддерживаются следующие параметры:

  • --nolog: Опции для отключения логирования:
    • all: Отключает все логирование.
    • file: Отключает логирование в файл.
    • console: Отключает логирование в консоль.
Returns:

argparse.Namespace: Объект с аргументами, переданными через командную строку.