pbf.utils.Logging

  1import logging
  2import os
  3import re
  4from logging.handlers import TimedRotatingFileHandler
  5
  6try:
  7    from ..config import logs_level, logs_format, logs_directory
  8    from ..utils import Path
  9except ImportError:
 10    from pbf.config import logs_level, logs_format, logs_directory
 11    from pbf.utils import Path
 12
 13
 14class Logger:
 15    def __init__(self, name: str) -> None:
 16        """
 17        Initialize the Logger.
 18        :param name: str Logger name
 19        """
 20        self.file_handler = None
 21        self.name = name
 22        self.logger = logging.getLogger(name)
 23        self.logger.setLevel(logs_level)
 24        self.formatter = logging.Formatter(logs_format)
 25
 26        self.console_handler = logging.StreamHandler()
 27        self.console_handler.setLevel(logs_level)
 28        self.console_handler.setFormatter(self.formatter)
 29
 30        self.set_file(logs_directory)
 31
 32        self.logger.addHandler(self.console_handler)
 33
 34    def get_logger(self) -> logging.Logger:
 35        """
 36        Get the logger.
 37        :return: logging.Logger
 38        """
 39        return self.logger
 40
 41    def set_level(self, level: str) -> None:
 42        """
 43        Set the logger level.
 44        :param level: str level
 45        :return: None
 46        """
 47        self.logger.setLevel(level)
 48        self.console_handler.setLevel(level)
 49        self.file_handler.setLevel(level)
 50
 51    def set_format(self, format: str) -> None:
 52        """
 53        Set the logger format.
 54        :param format: str format
 55        :return: None
 56        """
 57        self.formatter = logging.Formatter(format)
 58        self.console_handler.setFormatter(self.formatter)
 59        self.file_handler.setFormatter(self.formatter)
 60
 61    def set_file(self, file: str) -> None:
 62        """
 63        Set the logger file.
 64        :param file: str file path
 65        :return: None
 66        """
 67        self.file_handler = TimedRotatingFileHandler(
 68            filename=os.path.join(Path.replace(file), "log"), when="MIDNIGHT", interval=1, backupCount=20
 69        )
 70        self.file_handler.suffix = "%Y-%m-%d.log"
 71        self.file_handler.extMatch = re.compile(r"^\d{4}-\d{2}-\d{2}.log$")
 72        self.file_handler.setFormatter(self.formatter)
 73        self.logger.addHandler(self.file_handler)
 74
 75    def info(self, message: str, *args, **kwargs) -> None:
 76        """
 77        Log the info message.
 78        :param message: str message
 79        :param args: *list
 80        :param kwargs: **dict
 81        :return: None
 82        """
 83        self.logger.info(message, *args, **kwargs)
 84
 85    def debug(self, message: str, *args, **kwargs) -> None:
 86        """
 87        Log the debug message.
 88        :param message: str message
 89        :param args: *list
 90        :param kwargs: **dict
 91        :return: None
 92        """
 93        self.logger.debug(message, *args, **kwargs)
 94
 95    def warning(self, message: str, *args, **kwargs) -> None:
 96        """
 97        Log the warning message.
 98        :param message: str message
 99        :param args: *list
100        :param kwargs: **dict
101        :return: None
102        """
103        self.logger.warning(message, *args, **kwargs)
104
105    def error(self, message: str, *args, **kwargs) -> None:
106        """
107        Log the error message.
108        :param message: str message
109        :param args: *list
110        :param kwargs: **dict
111        :return: None
112        """
113        self.logger.error(message, *args, **kwargs)
114
115    def critical(self, message: str, *args, **kwargs) -> None:
116        """
117        Log the critical message.
118        :param message: str message
119        :param args: *list
120        :param kwargs: **dict
121        :return: None
122        """
123        self.logger.critical(message, *args, **kwargs)
124
125
126if __name__ == "__main__":
127    logger = Logger("test")
128    logger.info("info")
129    logger.debug("debug")
130    logger.warning("warning")
131    logger.error("error")
class Logger:
 15class Logger:
 16    def __init__(self, name: str) -> None:
 17        """
 18        Initialize the Logger.
 19        :param name: str Logger name
 20        """
 21        self.file_handler = None
 22        self.name = name
 23        self.logger = logging.getLogger(name)
 24        self.logger.setLevel(logs_level)
 25        self.formatter = logging.Formatter(logs_format)
 26
 27        self.console_handler = logging.StreamHandler()
 28        self.console_handler.setLevel(logs_level)
 29        self.console_handler.setFormatter(self.formatter)
 30
 31        self.set_file(logs_directory)
 32
 33        self.logger.addHandler(self.console_handler)
 34
 35    def get_logger(self) -> logging.Logger:
 36        """
 37        Get the logger.
 38        :return: logging.Logger
 39        """
 40        return self.logger
 41
 42    def set_level(self, level: str) -> None:
 43        """
 44        Set the logger level.
 45        :param level: str level
 46        :return: None
 47        """
 48        self.logger.setLevel(level)
 49        self.console_handler.setLevel(level)
 50        self.file_handler.setLevel(level)
 51
 52    def set_format(self, format: str) -> None:
 53        """
 54        Set the logger format.
 55        :param format: str format
 56        :return: None
 57        """
 58        self.formatter = logging.Formatter(format)
 59        self.console_handler.setFormatter(self.formatter)
 60        self.file_handler.setFormatter(self.formatter)
 61
 62    def set_file(self, file: str) -> None:
 63        """
 64        Set the logger file.
 65        :param file: str file path
 66        :return: None
 67        """
 68        self.file_handler = TimedRotatingFileHandler(
 69            filename=os.path.join(Path.replace(file), "log"), when="MIDNIGHT", interval=1, backupCount=20
 70        )
 71        self.file_handler.suffix = "%Y-%m-%d.log"
 72        self.file_handler.extMatch = re.compile(r"^\d{4}-\d{2}-\d{2}.log$")
 73        self.file_handler.setFormatter(self.formatter)
 74        self.logger.addHandler(self.file_handler)
 75
 76    def info(self, message: str, *args, **kwargs) -> None:
 77        """
 78        Log the info message.
 79        :param message: str message
 80        :param args: *list
 81        :param kwargs: **dict
 82        :return: None
 83        """
 84        self.logger.info(message, *args, **kwargs)
 85
 86    def debug(self, message: str, *args, **kwargs) -> None:
 87        """
 88        Log the debug message.
 89        :param message: str message
 90        :param args: *list
 91        :param kwargs: **dict
 92        :return: None
 93        """
 94        self.logger.debug(message, *args, **kwargs)
 95
 96    def warning(self, message: str, *args, **kwargs) -> None:
 97        """
 98        Log the warning message.
 99        :param message: str message
100        :param args: *list
101        :param kwargs: **dict
102        :return: None
103        """
104        self.logger.warning(message, *args, **kwargs)
105
106    def error(self, message: str, *args, **kwargs) -> None:
107        """
108        Log the error message.
109        :param message: str message
110        :param args: *list
111        :param kwargs: **dict
112        :return: None
113        """
114        self.logger.error(message, *args, **kwargs)
115
116    def critical(self, message: str, *args, **kwargs) -> None:
117        """
118        Log the critical message.
119        :param message: str message
120        :param args: *list
121        :param kwargs: **dict
122        :return: None
123        """
124        self.logger.critical(message, *args, **kwargs)
Logger(name: str)
16    def __init__(self, name: str) -> None:
17        """
18        Initialize the Logger.
19        :param name: str Logger name
20        """
21        self.file_handler = None
22        self.name = name
23        self.logger = logging.getLogger(name)
24        self.logger.setLevel(logs_level)
25        self.formatter = logging.Formatter(logs_format)
26
27        self.console_handler = logging.StreamHandler()
28        self.console_handler.setLevel(logs_level)
29        self.console_handler.setFormatter(self.formatter)
30
31        self.set_file(logs_directory)
32
33        self.logger.addHandler(self.console_handler)

Initialize the Logger.

Parameters
  • name: str Logger name
file_handler
name
logger
formatter
console_handler
def get_logger(self) -> logging.Logger:
35    def get_logger(self) -> logging.Logger:
36        """
37        Get the logger.
38        :return: logging.Logger
39        """
40        return self.logger

Get the logger.

Returns

logging.Logger

def set_level(self, level: str) -> None:
42    def set_level(self, level: str) -> None:
43        """
44        Set the logger level.
45        :param level: str level
46        :return: None
47        """
48        self.logger.setLevel(level)
49        self.console_handler.setLevel(level)
50        self.file_handler.setLevel(level)

Set the logger level.

Parameters
  • level: str level
Returns

None

def set_format(self, format: str) -> None:
52    def set_format(self, format: str) -> None:
53        """
54        Set the logger format.
55        :param format: str format
56        :return: None
57        """
58        self.formatter = logging.Formatter(format)
59        self.console_handler.setFormatter(self.formatter)
60        self.file_handler.setFormatter(self.formatter)

Set the logger format.

Parameters
  • format: str format
Returns

None

def set_file(self, file: str) -> None:
62    def set_file(self, file: str) -> None:
63        """
64        Set the logger file.
65        :param file: str file path
66        :return: None
67        """
68        self.file_handler = TimedRotatingFileHandler(
69            filename=os.path.join(Path.replace(file), "log"), when="MIDNIGHT", interval=1, backupCount=20
70        )
71        self.file_handler.suffix = "%Y-%m-%d.log"
72        self.file_handler.extMatch = re.compile(r"^\d{4}-\d{2}-\d{2}.log$")
73        self.file_handler.setFormatter(self.formatter)
74        self.logger.addHandler(self.file_handler)

Set the logger file.

Parameters
  • file: str file path
Returns

None

def info(self, message: str, *args, **kwargs) -> None:
76    def info(self, message: str, *args, **kwargs) -> None:
77        """
78        Log the info message.
79        :param message: str message
80        :param args: *list
81        :param kwargs: **dict
82        :return: None
83        """
84        self.logger.info(message, *args, **kwargs)

Log the info message.

Parameters
  • message: str message
  • args: *list
  • kwargs: **dict
Returns

None

def debug(self, message: str, *args, **kwargs) -> None:
86    def debug(self, message: str, *args, **kwargs) -> None:
87        """
88        Log the debug message.
89        :param message: str message
90        :param args: *list
91        :param kwargs: **dict
92        :return: None
93        """
94        self.logger.debug(message, *args, **kwargs)

Log the debug message.

Parameters
  • message: str message
  • args: *list
  • kwargs: **dict
Returns

None

def warning(self, message: str, *args, **kwargs) -> None:
 96    def warning(self, message: str, *args, **kwargs) -> None:
 97        """
 98        Log the warning message.
 99        :param message: str message
100        :param args: *list
101        :param kwargs: **dict
102        :return: None
103        """
104        self.logger.warning(message, *args, **kwargs)

Log the warning message.

Parameters
  • message: str message
  • args: *list
  • kwargs: **dict
Returns

None

def error(self, message: str, *args, **kwargs) -> None:
106    def error(self, message: str, *args, **kwargs) -> None:
107        """
108        Log the error message.
109        :param message: str message
110        :param args: *list
111        :param kwargs: **dict
112        :return: None
113        """
114        self.logger.error(message, *args, **kwargs)

Log the error message.

Parameters
  • message: str message
  • args: *list
  • kwargs: **dict
Returns

None

def critical(self, message: str, *args, **kwargs) -> None:
116    def critical(self, message: str, *args, **kwargs) -> None:
117        """
118        Log the critical message.
119        :param message: str message
120        :param args: *list
121        :param kwargs: **dict
122        :return: None
123        """
124        self.logger.critical(message, *args, **kwargs)

Log the critical message.

Parameters
  • message: str message
  • args: *list
  • kwargs: **dict
Returns

None