Отчеты об ошибках

Самый простой способ отправки отчета об ошибке или сообщении из драйвера или плагина SberMobile - это использование стандатной функции журналирования. SberMobile использует библиотеку Log4j для журналирования. Для журналирования сообщения требуется всего одна строка кода Java:

Logger.getLogger("ag.core").info("A message");

или

Logger.getLogger("ag.device.acme").error("Unexpected error", exception);

Документация библиотеки Log4j предлагает комплексную документацию всех аспектов конфигурирования и реализации журналирования.

Класс Log обеспечивает заранее определенные устройства регистрации общими категориями журналирования SberMobile. Вот пример использования:

Log.CORE.info("A message");

Отчет об ошибках через события SberMobile

Сообщения и ошибки, регистрируемые при помощи журнала, не видны системным операторам. Только системные администраторы, имеющие доступ к машине с запущенными SberMobile Server или SberMobile IIoT Platform Client, могут проверять журнал. Перенаправление вывода журнала другим адресатам все же не сделает информацию доступной операторам.

Чтобы сделать сообщение или проблему доступной одному и более системным операторам, сообщите о ней путем поиска события SberMobile типа инфо:

  • Извлеките экземпляр соответствующего Context через ContextManager.get(). Это может быть контекст устройства (если сообщать о проблеме из драйвера), контекст администратора (если сообщать о проблеме масштаба системы, такой как проблема запуска плагина) или любой другой контекст SberMobile Server.
  • Вызовите Context.fireEvent() для генерирования нового события контекста. Событие будет сохраняться в базе данных сервера и направляться подписанным слушателям (например, Журнал событий), чтобы системные операторы и администраторы могли получить доступ.

Ниже приведенный пример иллюстрирует, как составляется отчет о внутренней исправимой ошибке из драйвера устройства:

Context deviceContext = getDeviceContext();

 

deviceContext.fireEvent(AbstractContext.E_INFO, "Something happened inside the driver");