Skip to content

Logging

Initialize

from linecaspy.helpers.custom_logging import CustomLogger
logger = CustomLogger(log_debug=False, log_stream=True).logger

Null Handler

import logging
logger = logging.getLogger(__name__)
logger.addHandler(logging.NullHandler())

Code

Source code in linecaspy/helpers/custom_logging.py
class CustomLogger:
    def __init__(
        self,
        log_debug=False,
        log_stream=False,
        log_dir="/var/log/linecaspy",
        log_file=None,
        log_ext="log",
        log_name=None,
    ):
        """Sets up custom loggers

        Args:
            log_debug (bool): Whether to use logging.DEBUG or logging.INFO
            log_stream (bool): Whether to stream logs on console output
            log_dir (string): Folder path for logs
            log_file (string): File name for logs
            log_ext (string): File extension for logs
            log_name (string): If additional loggers are needed
        """
        self.log_debug = log_debug
        self.log_stream = log_stream
        self.log_dir = log_dir
        self.log_file = log_file
        self.log_ext = log_ext
        self.log_name = log_name
        self.logger = self.__get_logger()

    def __get_logger(self):
        """Internal class function to return logger based upon init values

        Returns:
            logger: For logging purposes
        """
        if not os.path.exists(self.log_dir):
            os.makedirs(self.log_dir)

        if self.log_name:
            rootLogger = logging.getLogger(self.log_name)
        else:
            rootLogger = logging.getLogger()

        if self.log_debug:
            rootLogger.setLevel(logging.DEBUG)
        else:
            rootLogger.setLevel(logging.INFO)

        log_formatter = logging.Formatter(fmt="%(asctime)s [%(levelname)s][%(module)s.%(funcName)s] %(message)s")

        if rootLogger.handlers != []:
            return rootLogger

        if self.log_file:
            full_log_path = f"{self.log_dir}/{self.log_file}.{self.log_ext}"
            fh = logging.FileHandler(full_log_path)
            fh.setFormatter(log_formatter)
            rootLogger.addHandler(fh)

        if self.log_stream:
            sh = logging.StreamHandler(sys.stdout)
            sh.setFormatter(log_formatter)
            rootLogger.addHandler(sh)

        return rootLogger

__init__(self, log_debug=False, log_stream=False, log_dir='/var/log/linecaspy', log_file=None, log_ext='log', log_name=None) special

Sets up custom loggers

Parameters:

Name Type Description Default
log_debug bool

Whether to use logging.DEBUG or logging.INFO

False
log_stream bool

Whether to stream logs on console output

False
log_dir string

Folder path for logs

'/var/log/linecaspy'
log_file string

File name for logs

None
log_ext string

File extension for logs

'log'
log_name string

If additional loggers are needed

None
Source code in linecaspy/helpers/custom_logging.py
def __init__(
    self,
    log_debug=False,
    log_stream=False,
    log_dir="/var/log/linecaspy",
    log_file=None,
    log_ext="log",
    log_name=None,
):
    """Sets up custom loggers

    Args:
        log_debug (bool): Whether to use logging.DEBUG or logging.INFO
        log_stream (bool): Whether to stream logs on console output
        log_dir (string): Folder path for logs
        log_file (string): File name for logs
        log_ext (string): File extension for logs
        log_name (string): If additional loggers are needed
    """
    self.log_debug = log_debug
    self.log_stream = log_stream
    self.log_dir = log_dir
    self.log_file = log_file
    self.log_ext = log_ext
    self.log_name = log_name
    self.logger = self.__get_logger()