Source code for ecpi.logger_ecpi
'''
Created on 29 juil. 2019
@author: Colley Jean-Marc
'''
import logging
import datetime
DICT_LEVELS = {
'debug': logging.DEBUG,
'info': logging.INFO,
'warning': logging.WARNING,
'error': logging.ERROR,
'critical': logging.CRITICAL
}
[docs]def check_logger_level(str_level):
"""Check the validity of the logger level specified in simu_config
and choose the appropriate one.
"""
try:
return DICT_LEVELS[str_level]
except:
return DICT_LEVELS['warning']
[docs]class ECPILogger(object):
def __init__(self, cfg=None):
"""**Constructor**
:param cfg: configuration container from the configuration file
:type cfg: ConfigParser
"""
if cfg is not None:
log_level = check_logger_level(cfg['general']['logger_level'])
else:
log_level = logging.WARNING
self.logger = logging.getLogger('ecpi')
self.logger.setLevel(log_level)
self.log_level = log_level
fh = logging.FileHandler('simu_channel.log', mode='w')
fh.setLevel(self.log_level)
ch = logging.StreamHandler()
ch.setLevel(self.log_level)
formatter = logging.Formatter('%(asctime)s#%(levelname)s[%(lineno)d]%(name)s: %(message)s','%H:%M:%S.%f')
fh.setFormatter(formatter)
ch.setFormatter(formatter)
self.logger.addHandler(fh)
self.logger.addHandler(ch)
self.filehandler = fh
self.streamhandler = ch
[docs] def message_start(self):
self.logger.info('===========> Start at '+ get_now_string())
[docs] def message_end(self):
self.logger.info('===========> End at '+ get_now_string())
[docs]def get_logger_path(pfile):
"""
/home/user/projet/ECLAIRs/ecpi/simu/pipeline/eclairs_channel_simu_case.py
.. warning: dead code
"""
p_ecpi = __file__.find('/ecpi/')
if p_ecpi ==None:
return None
g_str = pfile[p_ecpi+1:-3].replace('/','.')
return g_str
[docs]def get_now_string():
"""
.. warning: dead code
"""
return datetime.datetime.now().strftime('%Y-%m-%dT%H:%M:%SZ')