Source code for om_code.clogger

import datetime
import logging
from io import StringIO
import functools


[docs]def initlog(version=None): # enable logging starttime = "{:%Y-%b-%d %H:%M:%S}".format(datetime.datetime.now()) logger = logging.getLogger(__name__) logger.setLevel(logging.INFO) logstream = StringIO() loghandler = logging.StreamHandler(logstream) loghandler.setLevel(logging.INFO) logger.addHandler(loghandler) logger.propagate = False # start log if version: logger.info("version " + f"{version}") logger.info(f"{starttime}\n") return logger, logstream
###
[docs]def log(func): @functools.wraps(func) def wrapper(self, *args, **kwargs): res = func(self, *args, **kwargs) # store call to function in logstring methodname = func.__name__ logstring = methodname + "(" if any(args): argslist = [repr(a) for a in args] else: argslist = [] if any(kwargs): kwargslist = [f"{k}={v!r}" for k, v in kwargs.items()] else: kwargslist = [] logstring += ", ".join(argslist + kwargslist) + ")\n" self.logger.info(logstring) return res return wrapper