Source code for enerzyme.utils.base_logger
import logging, os, datetime, pathlib
from logging.handlers import TimedRotatingFileHandler
import enerzyme
BASE_NAME = "Enerzyme"
PACKAGE_PATH = str(pathlib.Path(enerzyme.__file__).parent.parent)
[docs]
class PackagePathFilter(logging.Filter):
[docs]
def filter(self, record):
"""add relative path to record
"""
pathname = record.pathname
record.relativepath = None
if pathname.startswith(PACKAGE_PATH):
record.relativepath = os.path.relpath(pathname, PACKAGE_PATH)
return True
[docs]
class Logger(object):
[docs]
def __init__(self, logger_name='None'):
self.logger = logging.getLogger(logger_name)
logging.root.setLevel(logging.NOTSET)
self.log_file_name = '{0}_{1}.log'.format(BASE_NAME, datetime.datetime.now().strftime("%Y-%m-%d-%H-%M-%S"))
cwd_path = os.path.abspath(os.getcwd())
self.log_path = os.path.join(cwd_path, "logs")
if not os.path.exists(self.log_path):
os.makedirs(self.log_path)
self.backup_count = 5
self.console_output_level = 'INFO'
self.file_output_level = 'INFO'
self.DATE_FORMAT = "%Y-%m-%d %H:%M:%S"
self.formatter = logging.Formatter("%(asctime)s | %(relativepath)s:%(lineno)s | %(levelname)s | %(name)s | %(message)s", self.DATE_FORMAT)
[docs]
def get_logger(self):
if not self.logger.handlers:
console_handler = logging.StreamHandler()
console_handler.setFormatter(self.formatter)
console_handler.setLevel(self.console_output_level)
console_handler.addFilter(PackagePathFilter())
self.logger.addHandler(console_handler)
file_handler = TimedRotatingFileHandler(filename=os.path.join(self.log_path, self.log_file_name), when='D',
interval=1, backupCount=self.backup_count, delay=True, encoding='utf-8')
file_handler.setFormatter(self.formatter)
file_handler.setLevel(self.file_output_level)
self.logger.addHandler(file_handler)
return self.logger
logger = Logger(BASE_NAME).get_logger()
logger.setLevel(logging.INFO)