]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
manager/logging.py: created LoggerWithNotice
authorAleš Mrázek <ales.mrazek@nic.cz>
Tue, 26 Aug 2025 11:36:11 +0000 (13:36 +0200)
committerAleš Mrázek <ales.mrazek@nic.cz>
Thu, 16 Oct 2025 17:07:49 +0000 (19:07 +0200)
python/knot_resolver/manager/logging.py

index ab5e73219a0f26a2a6febded97347cd7c1f024d4..087c392dca99031b9bdf58e100ac33b39880a6b8 100644 (file)
@@ -2,7 +2,7 @@ import logging
 import logging.handlers
 import os
 import sys
-from typing import Optional
+from typing import Any, Optional
 
 from knot_resolver.datamodel.config_schema import KresConfig
 from knot_resolver.datamodel.logging_schema import LogTargetEnum
@@ -10,8 +10,6 @@ from knot_resolver.manager.config_store import ConfigStore, only_on_real_changes
 
 from .constants import LOGGING_LEVEL_STARTUP
 
-logger = logging.getLogger(__name__)
-
 NOTICE_LEVEL = (logging.WARNING + logging.INFO) // 2
 NOTICE_NAME = "NOTICE"
 
@@ -34,6 +32,21 @@ _level_to_name = {
 }
 
 
+class LoggerWithNotice(logging.Logger):
+    """Custom logger with additional notice log and level."""
+
+    def notice(self: logging.Logger, msg: Any, *args: Any, **kwargs: Any) -> None:
+        if self.isEnabledFor(NOTICE_LEVEL):
+            self._log(NOTICE_LEVEL, msg, args, **kwargs)
+
+
+logging.addLevelName(NOTICE_LEVEL, NOTICE_NAME)
+# set LoggerWithNotice as default logger class
+logging.setLoggerClass(LoggerWithNotice)
+
+logger = logging.getLogger(__name__)
+
+
 def get_log_format(config: KresConfig) -> str:
     """
     Based on an environment variable $KRES_SUPRESS_LOG_PREFIX, returns the appropriate format string for logger.