Spaces:
Runtime error
Runtime error
import logging | |
import time | |
from datetime import timedelta | |
class LogFormatter: | |
def __init__(self): | |
self.start_time = time.time() | |
def format(self, record): | |
elapsed_seconds = round(record.created - self.start_time) | |
prefix = "%s - %s - %s" % ( | |
record.levelname, | |
time.strftime("%x %X"), | |
timedelta(seconds=elapsed_seconds), | |
) | |
message = record.getMessage() | |
message = message.replace("\n", "\n" + " " * (len(prefix) + 3)) | |
return "%s - %s" % (prefix, message) | |
def create_logger(filepath, args): | |
# create log formatter | |
log_formatter = LogFormatter() | |
# create file handler and set level to debug | |
file_handler = logging.FileHandler(filepath, "a") | |
file_handler.setLevel(logging.DEBUG) | |
file_handler.setFormatter(log_formatter) | |
# create console handler and set level to info | |
console_handler = logging.StreamHandler() | |
console_handler.setLevel(logging.INFO) | |
console_handler.setFormatter(log_formatter) | |
# create logger and set level to debug | |
logger = logging.getLogger() | |
logger.handlers = [] | |
logger.setLevel(logging.DEBUG) | |
logger.propagate = False | |
logger.addHandler(file_handler) | |
logger.addHandler(console_handler) | |
# reset logger elapsed time | |
def reset_time(): | |
log_formatter.start_time = time.time() | |
logger.reset_time = reset_time | |
logger.info( | |
"\n".join( | |
"%s: %s" % (k, str(v)) | |
for k, v in sorted(dict(vars(args)).items(), key=lambda x: x[0]) | |
) | |
) | |
return logger | |