diff --git a/pySDC/core/controller.py b/pySDC/core/controller.py index b06d58e360..ff20d7fc4b 100644 --- a/pySDC/core/controller.py +++ b/pySDC/core/controller.py @@ -92,7 +92,25 @@ def __setup_custom_logger(level=None, log_to_file=None, fname=None): file_handler = None std_formatter = logging.Formatter(fmt='%(name)s - %(levelname)s: %(message)s') - std_handler = logging.StreamHandler(sys.stdout) + + if level <= logging.DEBUG: + import warnings + + warnings.warn('Running with debug output will degrade performance as all output is immediately flushed.') + + class StreamFlushingHandler(logging.StreamHandler): + """ + This will immediately flush any messages to the output. + """ + + def emit(self, record): + super().emit(record) + self.flush() + + std_handler = StreamFlushingHandler(sys.stdout) + else: + std_handler = logging.StreamHandler(sys.stdout) + std_handler.setFormatter(std_formatter) # instantiate logger