From: Aleš Mrázek Date: Tue, 26 Aug 2025 13:12:01 +0000 (+0200) Subject: logging: debug logging level for individual components(processes) X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fenvironments%2Fdocs-logging-impr-dwwxha%2Fdeployments%2F7498;p=thirdparty%2Fknot-resolver.git logging: debug logging level for individual components(processes) - datamodel: logging-groups: added LogGroupsProcessesEnum --- diff --git a/doc/_static/config.schema.json b/doc/_static/config.schema.json index 88e11901d..a2dd64219 100644 --- a/doc/_static/config.schema.json +++ b/doc/_static/config.schema.json @@ -1523,6 +1523,8 @@ "enum": [ "manager", "supervisord", + "policy-loader", + "kresd", "cache-gc", "system", "cache", diff --git a/python/knot_resolver/datamodel/logging_schema.py b/python/knot_resolver/datamodel/logging_schema.py index 6c398a859..51d0a0e84 100644 --- a/python/knot_resolver/datamodel/logging_schema.py +++ b/python/knot_resolver/datamodel/logging_schema.py @@ -7,10 +7,16 @@ from knot_resolver.utils.modeling.base_schema import is_obj_type_valid LogLevelEnum = Literal["crit", "err", "warning", "notice", "info", "debug"] LogTargetEnum = Literal["syslog", "stderr", "stdout"] -LogGroupsEnum = Literal[ + +LogGroupsProcessesEnum = Literal[ "manager", "supervisord", + "policy-loader", + "kresd", "cache-gc", +] + +LogGroupsKresdEnum = Literal[ ## Now the LOG_GRP_*_TAG defines, exactly from ../../../lib/log.h "system", "cache", @@ -62,6 +68,8 @@ LogGroupsEnum = Literal[ # "reqdbg",... (non-displayed section of the enum) ] +LogGroupsEnum = Literal[LogGroupsProcessesEnum, LogGroupsKresdEnum] + class DnstapSchema(ConfigSchema): """ diff --git a/python/knot_resolver/datamodel/templates/logging.lua.j2 b/python/knot_resolver/datamodel/templates/logging.lua.j2 index 2d5937a83..4afe48c47 100644 --- a/python/knot_resolver/datamodel/templates/logging.lua.j2 +++ b/python/knot_resolver/datamodel/templates/logging.lua.j2 @@ -1,7 +1,11 @@ {% from 'macros/common_macros.lua.j2' import boolean %} -- logging.level +{% if cfg.logging.groups and "kresd" in cfg.logging.groups %} +log_level('debug') +{% else %} log_level('{{ cfg.logging.level }}') +{% endif %} {% if cfg.logging.target -%} -- logging.target @@ -12,7 +16,7 @@ log_target('{{ cfg.logging.target }}') -- logging.groups log_groups({ {% for g in cfg.logging.groups %} -{% if g != "manager" and g != "supervisord" and g != "cache-gc" %} +{% if g not in ["manager", "supervisord", "policy-loader", "kresd", "cache-gc"] %} '{{ g }}', {% endif %} {% endfor %} diff --git a/python/knot_resolver/datamodel/templates/policy-config.lua.j2 b/python/knot_resolver/datamodel/templates/policy-config.lua.j2 index fbd824b38..ec30171d8 100644 --- a/python/knot_resolver/datamodel/templates/policy-config.lua.j2 +++ b/python/knot_resolver/datamodel/templates/policy-config.lua.j2 @@ -5,7 +5,11 @@ ffi = require('ffi') local C = ffi.C -- logging.level +{% if cfg.logging.groups and "policy-loader" in cfg.logging.groups %} +log_level('debug') +{% else %} log_level('{{ cfg.logging.level }}') +{% endif %} {% if cfg.logging.target -%} -- logging.target @@ -16,7 +20,7 @@ log_target('{{ cfg.logging.target }}') -- logging.groups log_groups({ {% for g in cfg.logging.groups %} -{% if g != "manager" and g != "supervisord" and g != "cache-gc" %} +{% if g not in ["manager", "supervisord", "policy-loader", "kresd", "cache-gc"] %} '{{ g }}', {% endif %} {% endfor %} diff --git a/python/knot_resolver/utils/modeling/base_schema.py b/python/knot_resolver/utils/modeling/base_schema.py index 73cd1d0aa..06b01d011 100644 --- a/python/knot_resolver/utils/modeling/base_schema.py +++ b/python/knot_resolver/utils/modeling/base_schema.py @@ -195,7 +195,13 @@ def _describe_type(typ: Type[Any]) -> Dict[Any, Any]: # noqa: PLR0911, PLR0912 return {"type": "string"} if is_literal(typ): - lit = get_generic_type_arguments(typ) + lit: List[Any] = [] + args = get_generic_type_arguments(typ) + for arg in args: + if is_literal(arg): + lit += get_generic_type_arguments(arg) + else: + lit.append(arg) return {"type": "string", "enum": lit} if is_optional(typ):