Source code for seispy.setuplog
import logging
from os.path import expanduser, join
[docs]
class SetupLog(object):
default_level = logging.INFO
default_logs={
"RF2depthlog":("RF2depth",default_level,"stream_handler"),
"RFlog":("RF",default_level,"stream_handler"),
"Batlog":("Bat",default_level,"stream_handler","file_handler"),
"CCPlog":("CCP",default_level,"stream_handler"),
"ModCreatorlog":("ModCreator",default_level,"stream_handler"),
"PickDepthlog": ("PickDepth", default_level,"stream_handler")
}
def __init__(self, filename=join(expanduser('~'), '.RF.log')):
"""
use default_logs to gen loggers
change default_logs for future changes if needed,
check logger level with logger.getEffectiveLevel
"""
self.filename = filename
fh = logging.FileHandler(filename, mode='w')
ch = logging.StreamHandler()
formatter = logging.Formatter('%(asctime)s [%(name)s] %(levelname)s: %(message)s')
fh.setFormatter(formatter)
ch.setFormatter(formatter)
for loger_branch, config in self.default_logs.items():
# init, setlevel
log = logging.getLogger(config[0])
log.setLevel(config[1])
# add handler
if not log.hasHandlers():
if "file_handler" in config:
log.addHandler(fh)
if "stream_handler" in config:
log.addHandler(ch)
# attach to class
setattr(self,loger_branch,log)
if __name__ == '__main__':
logger = SetupLog()
logger.RFlog.info('print')