summaryrefslogtreecommitdiffstats
path: root/staslib/log.py
diff options
context:
space:
mode:
authorBenjamin Drung <bdrung@debian.org>2023-06-10 08:55:33 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2023-06-10 09:21:49 +0000
commit88837172f69eabc408ae3945d82e0270b8e07440 (patch)
treed6b7fa06694f45d25f54f6ea9ded93c981e51f6f /staslib/log.py
parentInitial commit. (diff)
downloadnvme-stas-88837172f69eabc408ae3945d82e0270b8e07440.tar.xz
nvme-stas-88837172f69eabc408ae3945d82e0270b8e07440.zip
Adding upstream version 2.2.1.upstream/2.2.1
Signed-off-by: Benjamin Drung <bdrung@debian.org>
Diffstat (limited to 'staslib/log.py')
-rw-r--r--staslib/log.py53
1 files changed, 53 insertions, 0 deletions
diff --git a/staslib/log.py b/staslib/log.py
new file mode 100644
index 0000000..9622e98
--- /dev/null
+++ b/staslib/log.py
@@ -0,0 +1,53 @@
+# Copyright (c) 2022, Dell Inc. or its subsidiaries. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+# See the LICENSE file for details.
+#
+# This file is part of NVMe STorage Appliance Services (nvme-stas).
+#
+# Authors: Martin Belanger <Martin.Belanger@dell.com>
+#
+'''nvme-stas logging module'''
+
+import sys
+import logging
+from staslib import defs
+
+
+def init(syslog: bool):
+ '''Init log module
+ @param syslog: True to send messages to the syslog,
+ False to send messages to stdout.
+ '''
+ log = logging.getLogger()
+ log.propagate = False
+
+ if syslog:
+ try:
+ # Try journal logger first
+ import systemd.journal # pylint: disable=import-outside-toplevel
+
+ handler = systemd.journal.JournalHandler(SYSLOG_IDENTIFIER=defs.PROG_NAME)
+ except ModuleNotFoundError:
+ # Go back to standard syslog handler
+ from logging.handlers import SysLogHandler # pylint: disable=import-outside-toplevel
+
+ handler = SysLogHandler(address="/dev/log")
+ handler.setFormatter(logging.Formatter(f'{defs.PROG_NAME}: %(message)s'))
+ else:
+ # Log to stdout
+ handler = logging.StreamHandler(stream=sys.stdout)
+
+ log.addHandler(handler)
+ log.setLevel(logging.INFO if syslog else logging.DEBUG)
+
+
+def level() -> str:
+ '''@brief return current log level'''
+ logger = logging.getLogger()
+ return str(logging.getLevelName(logger.getEffectiveLevel()))
+
+
+def set_level_from_tron(tron):
+ '''Set log level based on TRON'''
+ logger = logging.getLogger()
+ logger.setLevel(logging.DEBUG if tron else logging.INFO)