Логирование JS-ошибок на сервере

  • Логирование JS-ошибок на сервере

    Антон Долганин 26 Февраля 2016 8:33 6283
    Тема логирования JS-ошибок на сервере не нова, есть даже спец.сервисы, предоставляющие такие мониторинги. Тут я поделюсь простым решением для Битрикс.

    Чаще всего к такому логированию прибегают, когда явно ошибок нет, но через раз они проявляются, причем у посетителей сайта, которые про это или умалчивают, или не могут объяснить порядок действий до ошибки. Особо опасно это для магазина, когда вкравшаяся ошибка мешает оформлению заказа, а вы про это даже не догадываетесь. Вот на странице оформления заказа мы и будем логировать ошибки.

    Переходим на эту страницу и просто в режиме редактирования страницы как PHP вставляем этот код

    111.png

    <script type="text/javascript">
       window.onerror = function (msg, url, line, col, exception) {
          BX.ajax.get('/ajax/js_error.php', {
             data: {
                msg: msg,
                exception: exception,
                url: url,
                line: line,
                col: col
             }
          });
       }
    </script> 

    А в директорию /ajax/ вашего сайта бросаете файл логирования, прикрепленный к этому посту, вот его код:
    <?php
    /*
     * JS-логгер.
     */
    define('LOG_FILENAME', $_SERVER['DOCUMENT_ROOT'].'/ajax/js_error.txt');
    require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php');
    
    $request = \Bitrix\Main\Context::getCurrent()->getRequest();
    
    if ($request->get('data')) {
       AddMessage2Log(print_r($request->get('data'), true));
    }


    В результате в случае ошибки в той же папке появится лог с ошибками:

    222.png
    Файлы:
    js_error.php (338 Б)