83 lines
2.1 KiB
Python
83 lines
2.1 KiB
Python
# pragma pylint: disable=too-few-public-methods
|
|
|
|
"""
|
|
This module contains the class for logger and logging messages
|
|
"""
|
|
|
|
import logging
|
|
from typing import Optional
|
|
|
|
|
|
class Logger(object):
|
|
"""
|
|
Logging class
|
|
"""
|
|
def __init__(self, name, level: Optional[int] = None) -> None:
|
|
"""
|
|
Init the logger class
|
|
:param name: Name of the Logger scope
|
|
:param level: Logger level that should be used
|
|
:return: None
|
|
"""
|
|
self.name = name
|
|
self.logger = None
|
|
|
|
self.level = level or logging.getLogger().getEffectiveLevel()
|
|
|
|
self._init_logger()
|
|
|
|
def _init_logger(self) -> None:
|
|
"""
|
|
Setup the bot logger configuration
|
|
:return: None
|
|
"""
|
|
logging.basicConfig(
|
|
level=self.level,
|
|
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
|
|
)
|
|
|
|
self.logger = self.get_logger()
|
|
self.set_level(self.level)
|
|
|
|
def get_logger(self) -> logging.RootLogger:
|
|
"""
|
|
Return the logger instance to use for sending message
|
|
:return: the logger instance
|
|
"""
|
|
return logging.getLogger(self.name)
|
|
|
|
def set_name(self, name: str) -> logging.RootLogger:
|
|
"""
|
|
Set the name of the logger
|
|
:param name: Name of the logger
|
|
:return: None
|
|
"""
|
|
self.name = name
|
|
self.logger = self.get_logger()
|
|
return self.logger
|
|
|
|
def set_level(self, level) -> None:
|
|
"""
|
|
Set the level of the logger
|
|
:param level:
|
|
:return: None
|
|
"""
|
|
self.level = level
|
|
self.logger.setLevel(self.level)
|
|
|
|
def set_format(self, log_format: str, propagate: bool = False) -> None:
|
|
"""
|
|
Set a new logging format
|
|
:return: None
|
|
"""
|
|
handler = logging.StreamHandler()
|
|
|
|
len_handlers = len(self.logger.handlers)
|
|
if len_handlers:
|
|
self.logger.removeHandler(handler)
|
|
|
|
handler.setFormatter(logging.Formatter(log_format))
|
|
self.logger.addHandler(handler)
|
|
|
|
self.logger.propagate = propagate
|