diff --git a/beekeepy/beekeepy/_remote_handle/abc/handle.py b/beekeepy/beekeepy/_remote_handle/abc/handle.py index a632b5bc69862b9b9c33486b158ba53f09c3c420..dc77ea8868c0a56b5acd33c40a2341b48bda30a9 100644 --- a/beekeepy/beekeepy/_remote_handle/abc/handle.py +++ b/beekeepy/beekeepy/_remote_handle/abc/handle.py @@ -3,7 +3,7 @@ from __future__ import annotations from abc import ABC, abstractmethod from typing import TYPE_CHECKING, Any, Generic, TypeVar -from loguru import logger +from loguru import logger as loguru_logger from beekeepy._communication.aiohttp_communicator import AioHttpCommunicator from beekeepy._communication.request_communicator import RequestCommunicator @@ -35,6 +35,7 @@ class AbstractHandle(UniqueSettingsHolder[Settings], ABC, Generic[ApiT]): self, *args: Any, settings: Settings, + logger: Logger | None = None, **kwargs: Any, ) -> None: """Constructs handle to network service. @@ -44,7 +45,7 @@ class AbstractHandle(UniqueSettingsHolder[Settings], ABC, Generic[ApiT]): communicator: communicator class to use for communication """ super().__init__(*args, settings=settings, **kwargs) - self.__logger = self.__configure_logger() + self.__logger = self.__configure_logger(logger) self.__overseer = self.settings.get_overseer( communicator=(self.settings.try_get_communicator_instance() or self._get_recommended_communicator()) ) @@ -112,9 +113,9 @@ class AbstractHandle(UniqueSettingsHolder[Settings], ABC, Generic[ApiT]): assert isinstance(serialized_data, JSONRPCResult) return serialized_data - def __configure_logger(self) -> Logger: + def __configure_logger(self, logger: Logger | None) -> Logger: # credit for lazy=True: https://github.com/Delgan/loguru/issues/402#issuecomment-2028011786 - return logger.opt(lazy=True).bind(**self._logger_extras()) + return (logger or loguru_logger).opt(lazy=True).bind(**self._logger_extras()) def teardown(self) -> None: self._overseer.teardown() diff --git a/beekeepy/beekeepy/_runnable_handle/beekeeper.py b/beekeepy/beekeepy/_runnable_handle/beekeeper.py index 0b6e7287a25c2def2c99e2e944ad41181dbad54f..58bc9f661c43c77556cf416c458e8bac11315a5c 100644 --- a/beekeepy/beekeepy/_runnable_handle/beekeeper.py +++ b/beekeepy/beekeepy/_runnable_handle/beekeeper.py @@ -58,7 +58,7 @@ class AsyncRemoteBeekeeper(remote_beekeeper.AsyncBeekeeper): class BeekeeperCommon(BeekeeperNotificationCallbacks, ABC): def __init__(self, *args: Any, settings: Settings, logger: Logger, **kwargs: Any) -> None: - super().__init__(*args, settings=settings, **kwargs) + super().__init__(*args, settings=settings, logger=logger, **kwargs) self.__exec = BeekeeperExecutable(settings, logger) self.__notification_server: UniversalNotificationServer | None = None self.__notification_event_handler: NotificationHandler | None = None