]> 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, 28 Aug 2025 11:00:33 +0000 (13:00 +0200)
python/knot_resolver/manager/logging.py

index 6ad52966f8605cf984f0b38f85023cb4fe06e3b8..2b3f2cd570420cf66bcd3e0af49288bad6afe2a6 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.