From b11dde02614d1e44779ecc069d1d346b26fe53ce Mon Sep 17 00:00:00 2001 From: Robert Tuck Date: Tue, 12 May 2026 17:12:32 +0100 Subject: [PATCH 1/3] Change the process name for hyperion for better graylog output --- src/mx_bluesky/common/utils/log.py | 12 +++++++++++- src/mx_bluesky/hyperion/__main__.py | 5 ++++- .../external_interaction/callbacks/__main__.py | 2 ++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/mx_bluesky/common/utils/log.py b/src/mx_bluesky/common/utils/log.py index 86a95f7621..9bc895318c 100644 --- a/src/mx_bluesky/common/utils/log.py +++ b/src/mx_bluesky/common/utils/log.py @@ -1,5 +1,6 @@ import json import logging +import multiprocessing from logging.handlers import TimedRotatingFileHandler from os import environ from pathlib import Path @@ -90,10 +91,19 @@ def do_default_logging_setup( graylog_port: int, dev_mode: bool = False, integrate_all_logs: bool = True, + process_name: str | None = None, ): """Configures dodal logger so that separate debug and info log files are created, info logs are sent to Graylog, info logs are streamed to sys.sterr, and logs from ophyd - and bluesky and ophyd-async are optionally included.""" + and bluesky and ophyd-async are optionally included. + Args: + file_name: Name of the log file for file-based logging + graylog_port: Port number for graylog + dev_mode (bool): True if we should not log to production graylog + integrate_all_logs (bool): True (the default) to include ophyd-async, bluesky logs in the parent dodal logger + process_name (str): Set the process name for LogRecord objects for inclusion in graylog.""" + if process_name: + multiprocessing.current_process().name = process_name logging_path, debug_logging_path = _get_logging_dirs(dev_mode) handlers = set_up_all_logging_handlers( DODAL_LOGGER, diff --git a/src/mx_bluesky/hyperion/__main__.py b/src/mx_bluesky/hyperion/__main__.py index 8ce2c9db82..534d6b414a 100755 --- a/src/mx_bluesky/hyperion/__main__.py +++ b/src/mx_bluesky/hyperion/__main__.py @@ -28,13 +28,16 @@ def initialise_globals(args: HyperionArgs): - """Do all early main low-level application initialisation.""" + """Do all early main low-level application initialization.""" do_default_logging_setup( CONST.SUPERVISOR_LOG_FILE_NAME if args.mode == HyperionMode.SUPERVISOR else CONST.LOG_FILE_NAME, CONST.GRAYLOG_PORT, dev_mode=args.dev_mode, + process_name="hyperion-supervisor" + if args.mode == HyperionMode.SUPERVISOR + else "hyperion", ) LOGGER.info(f"Hyperion launched with args:{argv}") alerting.set_alerting_service(LoggingAlertService(CONST.GRAYLOG_STREAM_ID)) diff --git a/src/mx_bluesky/hyperion/external_interaction/callbacks/__main__.py b/src/mx_bluesky/hyperion/external_interaction/callbacks/__main__.py index 12fb82475e..f66bd961b0 100644 --- a/src/mx_bluesky/hyperion/external_interaction/callbacks/__main__.py +++ b/src/mx_bluesky/hyperion/external_interaction/callbacks/__main__.py @@ -1,4 +1,5 @@ import logging +import multiprocessing import os from abc import abstractmethod from collections.abc import Callable @@ -122,6 +123,7 @@ def setup_callbacks() -> list[CallbackBase]: def setup_logging(dev_mode: bool): + multiprocessing.current_process().name = "hyperion-callbacks" for logger, filename in [ (ISPYB_ZOCALO_CALLBACK_LOGGER, "hyperion_ispyb_callback.log"), (NEXUS_LOGGER, "hyperion_nexus_callback.log"), From 2396d06ea9fb6c30a37593bd58cd89a7c660b75a Mon Sep 17 00:00:00 2001 From: Robert Tuck Date: Thu, 14 May 2026 14:46:24 +0100 Subject: [PATCH 2/3] Fix unit tests --- tests/unit_tests/hyperion/test_main_system.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/unit_tests/hyperion/test_main_system.py b/tests/unit_tests/hyperion/test_main_system.py index 020c52337d..f63231ef0b 100644 --- a/tests/unit_tests/hyperion/test_main_system.py +++ b/tests/unit_tests/hyperion/test_main_system.py @@ -103,7 +103,7 @@ def test_initialise_configures_logging( initialise_globals(args) mock_logging_setup.assert_called_once_with( - CONST.LOG_FILE_NAME, CONST.GRAYLOG_PORT, dev_mode=True + CONST.LOG_FILE_NAME, CONST.GRAYLOG_PORT, dev_mode=True, process_name="hyperion" ) @@ -131,7 +131,7 @@ def test_hyperion_in_udc_mode_starts_logging( main() mock_do_default_logging_setup.assert_called_once_with( - CONST.LOG_FILE_NAME, CONST.GRAYLOG_PORT, dev_mode=False + CONST.LOG_FILE_NAME, CONST.GRAYLOG_PORT, dev_mode=False, process_name="hyperion" ) From 879be011747afa861212617efa79bc70b541ff9f Mon Sep 17 00:00:00 2001 From: Robert Tuck Date: Thu, 14 May 2026 14:46:43 +0100 Subject: [PATCH 3/3] Update uv.lock --- uv.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/uv.lock b/uv.lock index a3cbc9a23d..bdd785690d 100644 --- a/uv.lock +++ b/uv.lock @@ -807,8 +807,8 @@ wheels = [ [[package]] name = "dls-dodal" -version = "2.2.4.dev10+g0649293ed" -source = { git = "https://github.com/DiamondLightSource/dodal.git?rev=main#0649293ed97538713ef77ab6e6f55fe984abd616" } +version = "2.3.1.dev8+gca163b99a" +source = { git = "https://github.com/DiamondLightSource/dodal.git?rev=main#ca163b99a719b006e844067e724bf8c103615b83" } dependencies = [ { name = "aiofiles", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, { name = "aiohttp", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },