This is my logger.py file:
import sys
import datetime
import pytz
import logging
eastern = pytz.timezone('US/Eastern')
class StdErrFilter(logging.Filter):
def filter(self, rec):
return rec.levelno in (logging.ERROR,)
class StdOutFilter(logging.Filter):
def filter(self, rec):
return rec.levelno in (logging.DEBUG, logging.INFO, logging.WARNING, logging.NOTSET)
def timetz(*args):
return datetime.datetime.now(tz=eastern).timetuple()
def get_logger(caller, level=None, filename: str = None):
logger = logging.getLogger(caller)
format_str = '%(process)s - %(asctime)s - %(name)s - %(levelname)s - %(message)s'
formatter = logging.Formatter(format_str)
logging.Formatter.converter = timetz
h1 = logging.StreamHandler(sys.stdout)
h1.setLevel(logging.INFO)
h1.setFormatter(formatter)
h1.addFilter(StdOutFilter())
h2 = logging.StreamHandler(sys.stderr)
h2.setLevel(logging.ERROR)
h2.setFormatter(formatter)
h2.addFilter(StdErrFilter())
logging.basicConfig(level=logging.NOTSET, format=format_str, handlers=[h1, h2])
if filename:
file_handler = logging.FileHandler(filename)
file_handler.setLevel(logging.INFO)
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
return logger
Which is instantiated like this:
log = get_logger(__name__)
Unfortunately the pytorch compiler is flooding my logger with DEBUG messages. What’s the best way for us to manage this situation? I would like to capture useful messages (i.e. errors) from the compiler, but I don’t need the DEBUG messages. Thanks!