import logging LOG_FORMAT = '%(asctime)s %(app_name)s v%(app_version)s [%(levelname)s] %(message)s [%(filename)s:%(lineno)d]' class ContextFilter(logging.Filter): def __init__(self, app_name, app_version): self.app_name = app_name.upper() self.app_version = app_version super().__init__() def filter(self, record): record.app_name = self.app_name record.app_version = self.app_version return True def set_up_logging(app, app_name): log = logging.getLogger('werkzeug') log.setLevel(logging.WARN) logger = app.logger for handler in logger.handlers: logger.removeHandler(handler) log_formatter = logging.Formatter(LOG_FORMAT) # set up the new handlers stream_handler = logging.StreamHandler() stream_handler.setFormatter(log_formatter) stream_handler.setLevel(logging.INFO) logger.addFilter(ContextFilter(app_name, app.config['VERSION'])) logger.addHandler(stream_handler) app.logger.setLevel(logging.INFO)