Source code for dpp.helper_logging

import sys
import logging


[docs]class LoggerWriter(object): """ I don't know how this works, I got it from stackoverflow It's used to redirect stderr/stdout to a logging instance https://stackoverflow.com/questions/47325506/making-python-loggers-log-all-stdout-and-stderr-messages """ def __init__(self, writer): self._writer = writer self._msg = '' def write(self, message): self._msg = self._msg + message while '\n' in self._msg: pos = self._msg.find('\n') self._writer(self._msg[:pos]) self._msg = self._msg[pos+1:] def flush(self): if self._msg != '': self._writer(self._msg) self._msg = ''
[docs]def initiate_logs(loglvl, outfile=None, writemode="a", stderr=True): """Initiates a logging instance""" logger = logging.getLogger() logger.setLevel(loglvl) formatter = logging.Formatter("%(asctime)s | %(filename)s | %(name)s | %(lineno)-4d | %(levelname)-9s || %(message)s", "%y/%m/%d %H:%M") ch = logging.StreamHandler() ch.setFormatter(formatter) if outfile: fh = logging.FileHandler(outfile, writemode) fh.setLevel(loglvl) fh.setFormatter(formatter) logger.addHandler(fh) if stderr: sys.stderr = LoggerWriter(logger.error) # Redirect stderr to the log file