diff --git a/src/drunc/apps/ssh_configurator.py b/src/drunc/apps/ssh_configurator.py index 6a87dc576..0b4ee2168 100644 --- a/src/drunc/apps/ssh_configurator.py +++ b/src/drunc/apps/ssh_configurator.py @@ -12,7 +12,7 @@ import click import paramiko -from daqpytools.logging.levels import logging_log_levels +from daqpytools.logging import logging_log_levels from jinja2 import Template import drunc as _drunc diff --git a/src/drunc/apps/ssh_doctor.py b/src/drunc/apps/ssh_doctor.py index c1b56ca71..147f4c9fa 100755 --- a/src/drunc/apps/ssh_doctor.py +++ b/src/drunc/apps/ssh_doctor.py @@ -10,7 +10,7 @@ import click import conffwk -from daqpytools.logging.levels import logging_log_levels +from daqpytools.logging import logging_log_levels from drunc.process_manager.oks_parser import collect_apps from drunc.processes.ssh_process_lifetime_manager_paramiko import ( diff --git a/src/drunc/apps/ssh_validator.py b/src/drunc/apps/ssh_validator.py index 426bcfdd6..29070fb1c 100644 --- a/src/drunc/apps/ssh_validator.py +++ b/src/drunc/apps/ssh_validator.py @@ -3,7 +3,7 @@ import click import conffwk -from daqpytools.logging.levels import logging_log_levels +from daqpytools.logging import logging_log_levels from sh import Command from drunc.process_manager.oks_parser import collect_apps diff --git a/src/drunc/controller/controller.py b/src/drunc/controller/controller.py index c579fa01c..0d735449b 100644 --- a/src/drunc/controller/controller.py +++ b/src/drunc/controller/controller.py @@ -4,7 +4,7 @@ from concurrent.futures import ThreadPoolExecutor, as_completed from typing import Callable, List, TypeVar -from daqpytools.logging.handlers import LogHandlerConf +from daqpytools.logging import LogHandlerConf, setup_daq_ers_logger from druncschema.authoriser_pb2 import ActionType, SystemType from druncschema.broadcast_pb2 import BroadcastType from druncschema.controller_pb2 import ( @@ -86,7 +86,8 @@ def __init__(self, configuration, name: str, session: str, token: Token): self.broadcast_service = None self.monitoring_metrics = ControllerMonitoringMetrics() self.handlerconf = LogHandlerConf(init_ers=True) - self.log = get_logger(f"controller.core.{name}_ctrl", ers_kafka_handler=False) + self.log = get_logger(f"controller.core.{name}_ctrl") + setup_daq_ers_logger(self.log, session, f"drunc.{name}_ctrl") log_init = get_logger("controller.core.__init__") log_init.info(f"Initialising controller '{name}' with session '{session}'") diff --git a/src/drunc/controller/interface/controller.py b/src/drunc/controller/interface/controller.py index 33afddf92..4eadef8a2 100644 --- a/src/drunc/controller/interface/controller.py +++ b/src/drunc/controller/interface/controller.py @@ -4,7 +4,7 @@ import click import grpc -from daqpytools.logging.levels import logging_log_levels +from daqpytools.logging import logging_log_levels from druncschema.controller_pb2_grpc import add_ControllerServicer_to_server from druncschema.token_pb2 import Token diff --git a/src/drunc/controller/interface/shell.py b/src/drunc/controller/interface/shell.py index 11c484c19..ab33f9cd5 100644 --- a/src/drunc/controller/interface/shell.py +++ b/src/drunc/controller/interface/shell.py @@ -3,7 +3,7 @@ import click import click_shell -from daqpytools.logging.levels import logging_log_levels +from daqpytools.logging import logging_log_levels from drunc.controller.interface.commands import ( connect, diff --git a/src/drunc/process_manager/interface/process_manager.py b/src/drunc/process_manager/interface/process_manager.py index 649ba831e..6e3d1b294 100644 --- a/src/drunc/process_manager/interface/process_manager.py +++ b/src/drunc/process_manager/interface/process_manager.py @@ -7,8 +7,7 @@ import click import grpc -from daqpytools.logging.handlers import add_file_handler -from daqpytools.logging.levels import logging_log_levels +from daqpytools.logging import HandlerType, add_handler, logging_log_levels from druncschema.process_manager_pb2_grpc import add_ProcessManagerServicer_to_server from drunc.exceptions import DruncSetupException @@ -75,7 +74,7 @@ def run_pm( ) # Logger has been added to process_manager, so everything will be logged - add_file_handler(log, use_parent_handlers=True, path=log_path) + add_handler(log, HandlerType.File, True, path=log_path) for key, value in pmch.data.environment.items(): os.environ[key] = value diff --git a/src/drunc/process_manager/interface/shell.py b/src/drunc/process_manager/interface/shell.py index ad0e4c46e..5da7434c5 100644 --- a/src/drunc/process_manager/interface/shell.py +++ b/src/drunc/process_manager/interface/shell.py @@ -3,8 +3,7 @@ import click import click_shell -from daqpytools.logging.handlers import add_file_handler -from daqpytools.logging.levels import logging_log_levels +from daqpytools.logging import HandlerType, add_handler, logging_log_levels from drunc.process_manager.interface.commands import ( boot, @@ -64,7 +63,7 @@ def process_manager_shell(ctx, process_manager_address: str, log_level: str) -> # Not possible to initialise logger immediately as it requires # knowledge of the log path if desc.info: - add_file_handler(process_manager_log, use_parent_handlers=True, path=desc.info) + add_handler(process_manager_log, HandlerType.File, True, path=desc.info) process_manager_log.info( f"[green]{getpass.getuser()}[/green] connected to the process manager through a [green]drunc-process-manager-shell[/green] via address [green]{process_manager_address}[/green]" diff --git a/src/drunc/process_manager/process_manager.py b/src/drunc/process_manager/process_manager.py index f15bd20ab..59d77bffe 100644 --- a/src/drunc/process_manager/process_manager.py +++ b/src/drunc/process_manager/process_manager.py @@ -1,9 +1,10 @@ import abc import re +import sys import threading import time -from daqpytools.logging.handlers import HandlerType, LogHandlerConf +from daqpytools.logging import LogHandlerConf, exceptions, setup_daq_ers_logger from druncschema.authoriser_pb2 import ActionType, SystemType from druncschema.broadcast_pb2 import BroadcastType from druncschema.description_pb2 import CommandDescription, Description @@ -61,14 +62,24 @@ def __init__( """C'tor. Note that this takes the ERS env variables from the json files defined in data/process_manager!""" super().__init__() - self.handlerconf = LogHandlerConf(init_ers=True) + self.log = get_logger( f"process_manager.{configuration.get_data_type_name()}_process_manager", - ers_kafka_handler=False, ) self.log.debug(pid_info_str()) self.log.debug("Initialized ProcessManager") + # Validate that the ERS configuration is valid + try: + self.handlerconf = LogHandlerConf(init_ers=True) + except exceptions.ERSEnvError as e: + self.log.error( + f"Failed to set up ERS logger for process manager: [red]{e}[/red]" + ) + sys.exit(1) + + self.ers_handler_initialized: bool = False + self.configuration = configuration self.name = name self.session = session @@ -226,9 +237,13 @@ def find_by_uuid(pi_list, target_uuid: str): ) continue pi = find_by_uuid(results, diff) - err_msg = f"Process {pi.process_description.metadata.name} with UUID {pi.uuid.uuid} has died with a return code {pi.return_code}" - # easiest way to send one to Rich and ERS - self.log.critical(err_msg, extra={"handlers": [HandlerType.Rich]}) + err_msg = f"Process {pi.process_description.metadata.name} has died with a return code {pi.return_code}" + if not self.ers_handler_initialized: + setup_daq_ers_logger( + self.log, + pi.process_description.metadata.session, + "drunc.process_manager", + ) self.log.critical(err_msg, extra=self.handlerconf.ERS) time.sleep(interval_s) diff --git a/src/drunc/unified_shell/shell.py b/src/drunc/unified_shell/shell.py index e6776a6af..b80d8e33d 100644 --- a/src/drunc/unified_shell/shell.py +++ b/src/drunc/unified_shell/shell.py @@ -11,7 +11,7 @@ import click import click_shell import conffwk -from daqpytools.logging.levels import logging_log_levels +from daqpytools.logging import logging_log_levels from druncschema.description_pb2 import Description from druncschema.process_manager_pb2 import ProcessQuery diff --git a/src/drunc/utils/utils.py b/src/drunc/utils/utils.py index 2f7ad1923..983f5753c 100644 --- a/src/drunc/utils/utils.py +++ b/src/drunc/utils/utils.py @@ -14,7 +14,7 @@ from urllib.parse import urlparse from click import BadParameter -from daqpytools.logging.logger import get_daq_logger, setup_root_logger +from daqpytools.logging import get_daq_logger, setup_root_logger from requests import delete, get, patch, post from rich.progress import ( BarColumn,