Created
July 25, 2023 00:29
-
-
Save pythrick/ddeafeac4084a9575e1b8863b486516a to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| def _log_execution( # type: ignore[override] | |
| self, | |
| func: Callable[ | |
| [PropanMessage[MsgType]], | |
| Awaitable[T_HandlerReturn], | |
| ], | |
| **broker_args: AnyDict, | |
| ) -> Callable[[PropanMessage[MsgType]], Awaitable[T_HandlerReturn]]: | |
| @wraps(func) | |
| async def log_wrapper(message: PropanMessage[MsgType]) -> T_HandlerReturn: | |
| log_context = self._get_log_context(message=message, **broker_args) | |
| with context.scope("log_context", log_context): | |
| self._log("Received", extra=log_context) | |
| try: | |
| r = await func(message) | |
| except SkipMessage as e: | |
| self._log("Skipped", extra=log_context) | |
| raise e | |
| except Exception as e: | |
| self._log(repr(e), logging.ERROR, extra=log_context, exc_info=e) | |
| raise e | |
| else: | |
| self._log("Processed", extra=log_context) | |
| return r | |
| return log_wrapper | |
| # ... | |
| def _log( | |
| self, | |
| message: str, | |
| log_level: Optional[int] = None, | |
| extra: Optional[AnyDict] = None, | |
| exc_info: BaseException | bool | None = None, | |
| ) -> None: | |
| if self.logger is not None: | |
| self.logger.log( | |
| level=(log_level or self.log_level), msg=message, extra=extra, exc_info=exc_info | |
| ) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment