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()