Midas/utils/log.py

64 lines
2.1 KiB
Python
Raw Normal View History

2023-07-01 23:57:08 +01:00
import logging
import sys
import os
import inspect
from datetime import datetime
def get_loggers():
'''
Summary:
Creates 3 loggers with the same datetime; midasd-logger (DHCP), midast-logger (Topology), midasp-logger (Provisioning).
Each logger has a different emoji to make log sources easily identifiable.
'''
now = datetime.now().strftime("%Y-%m-%d_%H:%M:%S")
for logger_name in ['midasd-logger', 'midast-logger', 'midasp-logger']:
logger = logging.getLogger(logger_name)
logger.setLevel(logging.DEBUG)
if logger_name == 'midasd-logger':
formatter = logging.Formatter('%(asctime)s [%(levelname)s] \U0001F916 | %(message)s')
elif logger_name == 'midast-logger':
formatter = logging.Formatter('%(asctime)s [%(levelname)s] \U0001F47E | %(message)s')
elif logger_name == 'midasp-logger':
formatter = logging.Formatter('%(asctime)s [%(levelname)s] \U0001F47D | %(message)s')
file_handler = logging.FileHandler(os.getcwd() + '/logs/midas_' + now + '.log')
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(formatter)
stream_handler = logging.StreamHandler(sys.stdout)
stream_handler.setFormatter(formatter)
logger.addHandler(file_handler)
logger.addHandler(stream_handler)
def log(log_message, level):
'''
Summary:
Logs information to logfile at the specified level.
Takes:
log_message: Information to log
level: Level of which to log the information at
'''
caller_filename = inspect.stack()[1].filename
if 'midasd' in caller_filename:
logger = logging.getLogger('midasd-logger')
elif 'midast' in caller_filename:
logger = logging.getLogger('midast-logger')
elif 'midasp' in caller_filename:
logger = logging.getLogger('midasp-logger')
log_message_types = {
'debug': logger.debug,
'info': logger.info,
'warning': logger.warning,
'error': logger.error,
'critical': logger.critical
}
log_message_types[level](log_message)