Logger

Делитесь модулями
  • Модуль все еще считается недостаточно оттестированным для добавления в BAS?

  • @Elmore said in Logger:

    Модуль все еще считается недостаточно оттестированным для добавления в BAS?

    А разница?

    1. О модуле знает куда меньше людей, чем могло бы. При этом связанного рода вопросы появляются на форуме - в основном цветные тексты. Это один из самых востребованных модулей для новичков.
    2. Чем больше пользователей, тем больше вероятность быстрее выловить любого рода ошибки. А может и что-то добавить/доработать, кто знает.
  • @Elmore В этом модуле нет ошибок. Ну и разработчику виднее, что добавлять в сборку.

  • @UserTrue said in Logger:

    В этом модуле нет ошибок

    Однако, сильное заявление...

  • @DoctorKrolic said in Logger:

    @UserTrue said in Logger:

    В этом модуле нет ошибок

    Однако, сильное заявление...

    @UserTrue :

    c2b1f85c-2a66-420b-b2b4-1c641096618e-изображение.png

  • @UserTrue В большей степени я имел ввиду, что не стоит хорошему модулю оставаться на форумном распространении, если вдруг причина в том, что support считает его недостаточно оттестированным.
    Как мы понимаем, всегда может выплыть какой-то баг, о котором даже невозможно было предположить до массового использования.

    Просто хотелось узнать, вдруг кто-то что-то знает.
    На этом я со своими предположениями "все".

  • @UserTrue said in Logger:

    @Elmore В этом модуле нет ошибок.

    Полно 🙃 Все не помню, но один из: когда фильтруешь лог по номеру потока, то цветной текст исчезает.

  • @FastSpace said in Logger:

    @UserTrue said in Logger:

    @Elmore В этом модуле нет ошибок.

    Полно 🙃 Все не помню, но один из: когда фильтруешь лог по номеру потока, то цветной текст исчезает.

    А это не мой баг, это баг самого api bas, который используется, также в скомпилированным скрипте при двойном клике лог очищается (но остается в файле). Эти баги не критичны и забивать голову разработчику ими не вижу смысла.

  • @UserTrue во-первых, спасибо за классный модуль. Во-вторых, видел, что есть поддержка веб-интерфейса. Но в скомпилированном скрипте по умолчанию только английский перевод. Как отображать русский язык в русской версии интерфейса?

    И еще не работают цвета логов почему-то. Ниже код из веб интерфейса:

    /////Set color
    if (EventData["type"] == "success") {
        Text.addClass("uk-text-success")
    } else if (EventData["type"] == "info") {
    // Text.addClass("uk-text-muted")
        Text.css("color", EventData["color"])
    } else if (EventData["type"] == "fail") {
        Text.addClass("uk-text-danger")
    } else if (EventData["type"] == "error") {
        Text.addClass("uk-text-danger")
    } else if (EventData["type"] == "result") {
        Text.addClass("text-yellow")
    }
    
  • @thepappo поддержка веб интерфейса заключается только в возможности отправки событий в него, а реализация их отображения это ваша задача. Что касается языка, то его надо передать через глобальную переменную в настройки логгера

  • @UserTrue я просто смотрел в документации к твоему модулю и сам код модуля. Там должен передаваться "level", но он в веб интерфейс не приходит. Приходит только type (fail, success и user), что по дефолту и так приходит. Проблема не в том, как обработать, а в том что я не могу получить данные в веб интерфейс из модуля.

    Что касается языка, то его надо передать через глобальную переменную в настройки логгера

    Вот это не очень понял

    У меня веб интерфейс стандартный. В меню кнопки Translate to Russian и Translate to English. Попробовал в обработчики кликов по этим кнопкам засунуть изменение переменной _K, не работает =(

    $(".TranslateEn").on("click", function(event) {
            Translate("en")
            Api.SetGlobalVariable("_K", "en")
        })
    
        $(".TranslateRu").on("click", function(event) {
            Translate("ru")
            Api.SetGlobalVariable("_K", "ru")
        })
    
  • @thepappo said in Logger:

    @UserTrue я просто смотрел в документации к твоему модулю и сам код модуля. Там должен передаваться "level", но он в веб интерфейс не приходит. Приходит только type (fail, success и user), что по дефолту и так приходит. Проблема не в том, как обработать, а в том что я не могу получить данные в веб интерфейс из модуля.

    А вы какое событие слушаете? Нужно "custom-log"

    @thepappo said in Logger:

    Попробовал в обработчики кликов по этим кнопкам засунуть изменение переменной _K

    _K - Это же не глобальная переменная. Вообще лучше вызывать функцию в которой будут устанавливаться настройки по умолчанию и через которую передавать нужные аргументы. https://wiki.bablosoft.com/web-interface/#/callbasfunction?id=bas-function-simplified-call

  • @UserTrue

    А вы какое событие слушаете? Нужно "custom-log"

    Слушаю "log". "custom-log" пробовал, ничего не приходит.

    _K - Это же не глобальная переменная.

    Хм, ну это вроде как системная переменная баса, в которой хранится язык и ваш модуль как раз в нее смотрит. Если запускать веб интерфейс в режиме отладки, то таким макаром язык меняется. Если в скомпилированном - то нет. С функцией попробую, возможно в этом как раз дело.

  • @thepappo _K ну правильно это системная и никак не глобальная, модуль смотрит на нее если язык не указан. Но дело в том, что даже через глобальную переменную модуль не сможет отследить изменения переменной после применения настроек для модуля, поэтому лучше использовать функцию. Или же можно внести изменения в код модуля, чтобы в веб интерфейс отправлялись и русский и английский вариант, а решение что выводить будет приниматься на стороне интерфейса. До ПК доберусь так и сделаю. Просто я интерфейс пишу через вызовы функций и у меня не было таких проблем.

  • @thepappo Обновил модуль, добавил к данным поле ru и en, сделал небольшой рефакторинг кода

      Api.SetEventHandler((type, data) => {
        if (type === 'custom-log') {
          console.log(data)
        }
      })
    
    {
          "thread_name": "Thread #1",
          "action_id": '"363615980",
          "date":  "Wed Jan 05 2022 18:00:22 GMT+0700 (RTZ 6 (",
          "text": "Привет",
          "lang":  "ru",
          "ru": "Привет",
          "en":  "Hello",
          "level": "info",
          "color":  ""
    }
    
  • @UserTrue супер, пошел тестить

    ПыСы. Добавьте btc на кофе )

  • @thepappo said in Logger:

    @UserTrue супер, пошел тестить

    ПыСы. Добавьте btc на кофе )

    Добавил )) Надеюсь заведется, тк не тестировал в веб интерфейсе после обновления, потому что кончился премиум и не особо нужен сейчас

  • @UserTrue не, не приходит событие custom-log (

    /////Api event handler
    Api.SetEventHandler(function(EventType, EventData) {
    
        /////Display log
        if (EventType == "log") {
            let Logs = $('#Logs');
            let LogLine = $("<div></div>").addClass("log-line").attr("data-log-type", EventData["type"]);
            let Text = $("<span></span>").text(EventData["text"]);
    
            /////Add action id
            if (EventData["action_id"]) {
                LogLine.append($("<span></span>").text("[" + EventData["action_id"] + "] ").addClass("uk-text-muted"))
            }
    
            /////Set color
            if (EventData["type"] == "success") {
                Text.addClass("uk-text-success")
            } else if (EventData["type"] == "info") {
                Text.addClass("uk-text-muted")
            } else if (EventData["type"] == "fail") {
                Text.addClass("uk-text-danger")
            }
    
            /////Remove old lines
            $('#Logs .log-line').slice(500).remove();
    
    
            /////Append text
            LogLine.append(Text)
            Logs.append(LogLine)
        }
    
        if (EventType == "custom-log") {
            
            console.log(EventData) // ничего не выводится
    
            let Logs = $('#Logs');
            let LogLine = $("<div></div>").addClass("log-line").attr("data-log-type", EventData["type"]);
            let Text = $("<span></span>").text(EventData["text"]);
    
            /////Add action id, date and thread name
            var MsgDate = new Date(EventData["date"]);
            LogLine.append($("<span></span>").text("[" + EventData["action_id"] + "] " + "[" + MsgDate + "] " + EventData["thread_name"]).addClass("uk-text-muted"))
    
            /////Set color
            if (EventData["type"] == "success") {
                Text.addClass("uk-text-success")
            } else if (EventData["type"] == "fail") {
                Text.addClass("uk-text-danger")
            } else if (EventData["type"] == "user") {
                if (EventData["level"] == "warn") {
                    Text.addClass("text-yellow")
                } else if (EventData["level"] == "error") {
                    Text.addClass("uk-text-danger")
                }
            }
    
            /////Append text
            LogLine.append(Text)
            Logs.append(LogLine)
        }
    
  • @thepappo а в настройках логгера включена отправка событий в веб интерфейс? Стандартный лог приходит в интерфейс?