From 91316fb0ca2628ddb776b815155a61e13547c646 Mon Sep 17 00:00:00 2001 From: Lennart Nachtigall Date: Wed, 11 Oct 2023 08:37:22 +0200 Subject: [PATCH] Added syslog handler for launch log Signed-off-by: Lennart Nachtigall --- launch/launch/logging/__init__.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/launch/launch/logging/__init__.py b/launch/launch/logging/__init__.py index 30e6a738b..e1fda02c2 100644 --- a/launch/launch/logging/__init__.py +++ b/launch/launch/logging/__init__.py @@ -110,6 +110,7 @@ def reset(self): self._log_dir = None self.file_handlers = {} self.screen_handler = None + self.syslog_handler = None self.screen_formatter = None self.file_formatter = None self._log_handler_factory = None @@ -250,6 +251,17 @@ def get_screen_handler(self): self.screen_handler.setFormatter(self.screen_formatter) return self.screen_handler + def get_syslog_handler(self): + """ + Get the one and only syslog handler + """ + if self.syslog_handler is None: + self.syslog_handler = logging.handlers.SysLogHandler(address='/dev/log', facility='local1') + + if self.file_formatter: + self.syslog_handler.setFormatter(self.file_formatter) + return self.syslog_handler + def set_log_format(self, log_format, *, log_style=None): """ Set up launch log file format. @@ -275,6 +287,8 @@ def set_log_format(self, log_format, *, log_style=None): ) for handler in self.file_handlers.values(): handler.setFormatter(self.file_formatter) + if self.syslog_handler: + self.syslog_handler.setFormatter(self.file_formatter) else: self.file_formatter = None @@ -328,6 +342,10 @@ def get_logger(name=None) -> logging.Logger: launch_log_file_handler = launch_config.get_log_file_handler() if launch_log_file_handler not in logger.handlers: logger.addHandler(launch_log_file_handler) + syslog_handler = launch_config.get_syslog_handler() + if syslog_handler not in logger.handlers: + logger.addHandler(syslog_handler) + return logger