...

Логирование и отладка сценариев

Тема в разделе "Примеры сценариев", создана пользователем vyimova, 10 июн 2024.

  1. vyimova

    vyimova Участник

    Допустим, нам нужно найти идентификатор текущего пользователя и проверить его корректность. Рассмотрим разные способы логирования данных.

    С помощью console.log
    Используем в коде функцию console.log(data), где data – данные, которые хотим вывести в консоли. Необходимо декларировать константу console.

    Ограничение: Такое логирование работает только в клиентских сценариях

    Клиентский сценарий:
    Код:
    
    declare const consoleany;

    async function searchCurrentUser(): Promise<void> {
        const 
    current_user await System.users.getCurrentUser();
        const 
    current_user_id current_user.id;
        
    console.log(current_user_id);
    }
    С помощью Source
    Предварительно на вкладке, где выполнятся сценарий, открываем инструменты разработчика. Заходим на вкладку Source. Ищем там нужный скрипт. Обычно он выглядит как файл без расширения и напоминает любой системный идентификатор ELMA365, например, 2e3cd23b-3d22-4100-b005-c220cdaf14c0. Ставим точку останова (клик по номеру строки ЛКМ или клик на строку ПКМ и выбор Add breakpoint), выполняем на вкладке нужные для запуска кода действия (например, нажатие кнопки) и находим нужные данные после запуска дебаггера.

    Ограничение: выводятся в Source только клиентские сценарии.

    [​IMG]

    С помощью debugger
    Почти то же самое, как и предыдущем способом, но только в коде нужно прописать точку останова вручную. Пишем перед строкой, где хотим добавить точку останова, слово debugger. Открываем предварительно перед выполнением кода Инструменты разработчика.

    Ограничение: Используется только в клиентских сценариях.

    Клиентский сценарий:
    Код:
    
    declare const consoleany;

    async function searchCurrentUser(): Promise<void> {
        const 
    current_user await System.users.getCurrentUser();
        const 
    current_user_id current_user.id;
        
    debugger;
        
    console.log(current_user_id);
    }
    С помощью контекстной переменной
    Если какое-то действие нужно выполнить в серверном скрипте, и проверить его корректность, можно использовать для логирования контекстную переменную. Далее в зависимости от ситуации проверять ее или напрямую (например в контексте БП), или в отладке функций или БП, или использовать дополнительно другие способы логирования (например, console.log(Context.data.log)).

    Попробуем логировать с помощью переменной идентификатор текущего пользователя в серверном сценарии и затем проверить значение с используем консоли. Создадим переменную log с типом Текст.

    Клиентский сценарий:
    Код:
    
    declare const consoleany;

    async function searchCurrentUser(): Promise<void> {
        
    await Server.rpc.searchCurrentUserServer();
        
    console.log(Context.data.log);
    }
    Серверный сценарий:
    Код:
    
    async function searchCurrentUserServer(): Promise<void> {
        const 
    current_user await System.users.getCurrentUser();
        const 
    current_user_id current_user.id;
        
    Context.data.log current_user_id;
    }
    С помощью Webhook.site
    Заходим на https://webhook.site/ и получаем уникальный URL, на который нужно отправлять запросы. Например, https://webhook.site/e5bc0892-c742-48c7-bc24-eab8db844688. Далее этот URL нужно использовать в коде.

    Клиентский сценарий:
    Код:
    
    async function searchCurrentUser(): Promise<void> {
        
    await Server.rpc.searchCurrentUserServer();
    }
    Серверный сценарий:
    Код:
    
    const TEST_WEBHOOK_URL "https://webhook.site/e5bc0892-c742-48c7-bc24-eab8db844688";

    async function sendWebHookTest(datastring): Promise<void> {
        
    await fetch(TEST_WEBHOOK_URL,
            {
                
    method'POST',
                
    bodydata,
            }
        )
    }

    async function searchCurrentUserServer(): Promise<void> {
        const 
    current_user await System.users.getCurrentUser();
        const 
    current_user_id current_user.id;
        
    await sendWebHookTest("Id: " current_user_id);
    }
    После выполнения нужных действий, триггерящих запуск скриптов, получаем на вебхук запрос с нужными нам данными (элемент Raw Content).

    Ограничение: Нельзя отправлять какие-то секретные данные, например, ключи, логины, пароли и т.д.

    [​IMG]

    Недостаток: Ограничение в 100 запросов для бесплатного использования. После 100 запросов нужно поменять URL. Получить новый URL можно по кнопке +New в правой верхней части экрана.
    Последнее редактирование: 10 июн 2024