mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 15:12:06 +00:00 
			
		
		
		
	[logger] Improve level validation errors (#11589)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
		| @@ -173,14 +173,34 @@ def uart_selection(value): | |||||||
|     raise NotImplementedError |     raise NotImplementedError | ||||||
|  |  | ||||||
|  |  | ||||||
| def validate_local_no_higher_than_global(value): | def validate_local_no_higher_than_global(config): | ||||||
|     global_level = LOG_LEVEL_SEVERITY.index(value[CONF_LEVEL]) |     global_level = config[CONF_LEVEL] | ||||||
|     for tag, level in value.get(CONF_LOGS, {}).items(): |     global_level_index = LOG_LEVEL_SEVERITY.index(global_level) | ||||||
|         if LOG_LEVEL_SEVERITY.index(level) > global_level: |     errs = [] | ||||||
|             raise cv.Invalid( |     for tag, level in config.get(CONF_LOGS, {}).items(): | ||||||
|                 f"The configured log level for {tag} ({level}) must be no more severe than the global log level {value[CONF_LEVEL]}." |         if LOG_LEVEL_SEVERITY.index(level) > global_level_index: | ||||||
|  |             errs.append( | ||||||
|  |                 cv.Invalid( | ||||||
|  |                     f"The configured log level for {tag} ({level}) must not be less severe than the global log level ({global_level})", | ||||||
|  |                     [CONF_LOGS, tag], | ||||||
|  |                 ) | ||||||
|             ) |             ) | ||||||
|     return value |     if errs: | ||||||
|  |         raise cv.MultipleInvalid(errs) | ||||||
|  |     return config | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def validate_initial_no_higher_than_global(config): | ||||||
|  |     if initial_level := config.get(CONF_INITIAL_LEVEL): | ||||||
|  |         global_level = config[CONF_LEVEL] | ||||||
|  |         if LOG_LEVEL_SEVERITY.index(initial_level) > LOG_LEVEL_SEVERITY.index( | ||||||
|  |             global_level | ||||||
|  |         ): | ||||||
|  |             raise cv.Invalid( | ||||||
|  |                 f"The initial log level ({initial_level}) must not be less severe than the global log level ({global_level})", | ||||||
|  |                 [CONF_INITIAL_LEVEL], | ||||||
|  |             ) | ||||||
|  |     return config | ||||||
|  |  | ||||||
|  |  | ||||||
| Logger = logger_ns.class_("Logger", cg.Component) | Logger = logger_ns.class_("Logger", cg.Component) | ||||||
| @@ -263,6 +283,7 @@ CONFIG_SCHEMA = cv.All( | |||||||
|         } |         } | ||||||
|     ).extend(cv.COMPONENT_SCHEMA), |     ).extend(cv.COMPONENT_SCHEMA), | ||||||
|     validate_local_no_higher_than_global, |     validate_local_no_higher_than_global, | ||||||
|  |     validate_initial_no_higher_than_global, | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user