diff --git a/src/xfel_calibrate/setup_logging.py b/src/xfel_calibrate/setup_logging.py index 8d1bf40ffe4655b33cdf5d822be2f7e1a325ee8c..ae8cbda320238baf334596650bc455e622cad1d4 100644 --- a/src/xfel_calibrate/setup_logging.py +++ b/src/xfel_calibrate/setup_logging.py @@ -44,6 +44,7 @@ def log_error( except Exception as e: sys.stdout.write(f"Logging failed: {e}\n") +original_showwarning = warnings.showwarning def handle_warning( message: Warning, category: Type[Warning], @@ -52,20 +53,18 @@ def handle_warning( file=None, line=None, ) -> None: """Log and display warnings.""" - try: - warning_info = get_log_info(str(message), category) + if issubclass(category, CalibrationWarning): + warning_info = get_log_info(str(message), category) - with open(f"warnings_{JOB_ID}.log", "a") as log_file: - log_file.write(json.dumps(warning_info) + "\n") + with open(f"warnings_{JOB_ID}.log", "a") as log_file: + log_file.write(json.dumps(warning_info) + "\n") except Exception as e: - sys.stdout.write(f"Warning logging failed: {e}\n") + sys.stderr.write(f"Warning logging failed: {e}\n") finally: # Ensure warning is displayed in notebook. - # TODO: use e.g. latex_warning from cal_tools - # to display colored warning textbox - print(f"\n{category.__name__}: {message}\n") + original_showwarning(message, category, filename, lineno, file, line) # Get IPython shell