Update automation logger to include object_id like scripts (#37948)

This commit is contained in:
Phil Bruckner 2020-07-22 10:55:49 -05:00 committed by GitHub
parent aa1c5fc43d
commit 65d1dfba62
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 61 additions and 18 deletions

View file

@ -620,13 +620,7 @@ class Script:
self.name = name
self.change_listener = change_listener
self.script_mode = script_mode
if logger:
self._logger = logger
else:
logger_name = __name__
if name:
logger_name = ".".join([logger_name, slugify(name)])
self._logger = logging.getLogger(logger_name)
self._set_logger(logger)
self._log_exceptions = log_exceptions
self.last_action = None
@ -638,12 +632,30 @@ class Script:
self._queue_lck = asyncio.Lock()
self._config_cache: Dict[Set[Tuple], Callable[..., bool]] = {}
self._repeat_script: Dict[int, Script] = {}
self._choose_data: Dict[
int, List[Tuple[List[Callable[[HomeAssistant, Dict], bool]], Script]]
] = {}
self._choose_data: Dict[int, Dict[str, Any]] = {}
self._referenced_entities: Optional[Set[str]] = None
self._referenced_devices: Optional[Set[str]] = None
def _set_logger(self, logger: Optional[logging.Logger] = None) -> None:
if logger:
self._logger = logger
else:
logger_name = __name__
if self.name:
logger_name = ".".join([logger_name, slugify(self.name)])
self._logger = logging.getLogger(logger_name)
def update_logger(self, logger: Optional[logging.Logger] = None) -> None:
"""Update logger."""
self._set_logger(logger)
for script in self._repeat_script.values():
script.update_logger(self._logger)
for choose_data in self._choose_data.values():
for _, script in choose_data["choices"]:
script.update_logger(self._logger)
if choose_data["default"]:
choose_data["default"].update_logger(self._logger)
def _changed(self):
if self.change_listener:
self._hass.async_run_job(self.change_listener)