В Web SDK отсутствует возможность полностью выключить логгирование в консоль браузера

Discussion in 'Web Call Server 5' started by Axel, Oct 31, 2019.

  1. Axel

    Axel New Member

    Здравствуйте.

    В Web SDK отсутствует возможность полностью отключить логгирование, возможно лишь изменить severity логгера. Как следствие, в конфиге по-умолчанию, в консоли браузера видно много "внутренней кухни" SDK, что само по себе уже плохо, и может быть совершенно неуместным в случае, если поверх Web SDK пишется обёртка для предоставления партнёрам, инкапсулирующая многие аспекты работы с ним.

    Частично проблема решается установкой severity, скажем, в "WARN", но это костыль, так как логгер https://github.com/flashphoner/flashphoner_client/blob/wcs_api-2.0/src/util.js#L171 безальтернативно использует "console.log()" для всех уровней.

    Второй стороной проблемы является невозможность перехвата этих логов. Скажем, если на фронтенде используется какой-либо трекер ошибок вроде Sentry или система сбора телеметрии, то было бы очень здорово иметь возможность зароутить логи из SDK в эти системы. Отчасти, это можно сделать подпиской на все события различных объектов SDK, но это лишь малая часть доступной информации (особенно в сравнении с severity "TRACE") и придётся писать много boilerplate-кода. Для решения этой задачи было бы неплохо иметь возможность подменять логгер на свою реализацию, либо позволить передавать коллекцию инстансов таких логгеров с интерфейсом того, который лежит в упомянутом выше "util.js", что бы вызов метода текущего внутреннего логгера (info(), debug(), etc.) сопровождался вызовом аналогичного метода и "внешнего" логгера.

    Короче говоря, это feature request из двух пунктов, первый из них очень желаем и прост в реализации:

    - для метода "Flashphoner.init()" добавить новое свойство в объект конфигурации логгера "logger", которое позволит отключить запись логов всех уровней в консоль браузера. Предусмотреть управление этой опцией логгера через объект, получаемый методом "Flashphoner.getLogger()", что бы была возможность включать и выключать эту опцию вне этапа конфигурирования Flashphoner через вызов "init()"
    - в дополнение к предыдущему пункту, для метода "Flashphoner.init()" добавить новое свойство-массив в объект конфигурации логгера "logger", которое позволит указывать список инстансов собственных логгеров для сбора информации от SDK, как было сказано выше.

    Пример кода для STR:

    Code:
    Flashphoner.init();
    
    Сообщения в консоли браузера:

    Code:
    INFO webrtc -  Initialized
    INFO websocket -  Initialized
    INFO core -  Initialized
    
  2. Max

    Max Administrator Staff Member

    Добрый день.
    Спасибо за подробный вопрос, мы рассмотрим возможность расширенных настроек логирования в WebSDK и сообщим вам о результате. По обращению создан внутренний тикет WCS-2340.
    Если вам необходимо реализовать указанный функционал в данный момент, рекомендуем самостоятельно собрать WebSDK с необходимыми изменениями.
    Last edited: Nov 1, 2019

Share This Page