import os import logging from datetime import datetime def get_logger(root, name=None, debug=True): # when debug is true, show DEBUG and INFO in screen # when debug is false, show DEBUG in file and info in both screen&file # INFO will always be in screen # create a logger logger = logging.getLogger(name) # critical > error > warning > info > debug > notset logger.setLevel(logging.DEBUG) # define the formate formatter = logging.Formatter('%(asctime)s: %(message)s', "%m/%d %H:%M") # create another handler for output log to console console_handler = logging.StreamHandler() if debug: console_handler.setLevel(logging.DEBUG) else: console_handler.setLevel(logging.INFO) # create a handler for write log to file logfile = os.path.join(root, 'run.log') print('Creat Log File in: ', logfile) file_handler = logging.FileHandler(logfile, mode='w') file_handler.setLevel(logging.DEBUG) file_handler.setFormatter(formatter) console_handler.setFormatter(formatter) # add Handler to logger logger.addHandler(console_handler) if not debug: logger.addHandler(file_handler) return logger if __name__ == '__main__': time = datetime.now().strftime('%Y%m%d%H%M%S') print(time) logger = get_logger('./log.txt', debug=True) logger.debug('this is a {} debug message'.format(1)) logger.info('this is an info message') logger.debug('this is a debug message') logger.info('this is an info message') logger.debug('this is a debug message') logger.info('this is an info message')