From 42cfe748e23bad6fc51b14a3e5896a77fdb5c1d5 Mon Sep 17 00:00:00 2001 From: Guilhem Moulin Date: Tue, 11 Jun 2024 22:08:49 +0200 Subject: Use systemd.journal to log to journald when sarted via .service files. This enables proper filtering by level etc. (incl. journald coloring). --- common.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'common.py') diff --git a/common.py b/common.py index 3eb8a3e..88a0f4d 100644 --- a/common.py +++ b/common.py @@ -27,6 +27,22 @@ from xdg.BaseDirectory import xdg_config_home import logging import yaml +def init_logger(app=__file__, level=logging.WARNING): + log_fmt = logging.Formatter('%(levelname)s: %(message)s') + log = logging.getLogger() + log.setLevel(level) + + if os.getenv('SYSTEMD_EXEC_PID', None) is None: + ch = logging.StreamHandler() + else: + # started in systemd, use journald for filtering incl. coloring + from systemd.journal import JournalHandler + ch = JournalHandler(SYSLOG_IDENTIFIER=app) + + ch.setFormatter(log_fmt) + log.addHandler(ch) + return log + def load_config(path=None, groupnames=None): if path is None: for p in [Path(), -- cgit v1.2.3