Интеграция pybotx-smart-logger и pybotx-smartapp-rpc
- Устанавливаем библиотеку:
poetry add pybotx-smartapp-smart-logger
-
Подключаем
pybotx-smart-logger
по инструкции из README -
Подключаем
pybotx-smartapp-rpc
по инструкции из README -
Подключаем хендлер исключений к смартапу
from pybotx_smartapp_smart_logger import smartapp_exception_handler
smartapp = SmartAppRPC(
routers=...,
exception_handlers={Exception: smartapp_exception_handler}
)
- Оборачиваем вызов
handle_smartapp_event
в контекстный менеджер:
from pybotx_smart_logger import wrap_system_event
@collector.smartapp_event
async def handle_smartapp_event(event: SmartAppEvent, bot: Bot) -> None:
with wrap_system_event(event, settings.DEBUG):
await smartapp.handle_smartapp_event(event, bot)
Добавлять логи лучше везде, где информация из них поможет при диагностике ошибки. Например, здесь выводятся аргументы перед выполением деления.
from pybotx_smart_logger import smart_log
@rpc.method("divide")
async def divide(
smartapp: SmartApp, rpc_arguments: SumArgs
) -> RPCResultResponse[int]:
smart_log(f"RPC method `divide` called with args: {rpc_arguments}")
return RPCResultResponse(result=rpc_arguments.a / rpc_arguments.b)