Logger

Делитесь модулями
  • @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 а в настройках логгера включена отправка событий в веб интерфейс? Стандартный лог приходит в интерфейс?

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

  • А в экшене "Настройки по умолчанию" в "Имя потока" надо что-то писать? У меня там пусто.

    Блин, заработало. У меня типы были expression там где true/false. А надо было string.

  • @thepappo said in Logger:

    А в экшене "Настройки по умолчанию" в "Имя потока" надо что-то писать? У меня там пусто.

    Блин, заработало. У меня типы были expression там где true/false. А надо было string.

    Имя потока не обязательно. Хорошо, что заработало, не придется продлять премиум ))

  • @UserTrue спасибо большое. Есть только пожелание.
    Выше в коде у меня оба события добавлены в хендлер - и log, и custom-log. Я ведь правильно понимаю, что кастомный логгер логирует только события, которые в шабе указаны в экшенах и не будет отправлять системные сообщения баса и т.п.? И по этой причине надо все равно для таких сообщений оставлять событие "log"?

  • @thepappo да, за исключением сообщений об ожидании элемента, их тоже умеет перехватывать. Получается, что он не может отправить только сообщение о ожидании ресурса и завершение потока, если оно произошло не через экшены из логгера. Сообщение о ожидании ресурса не часто встречается и не особо важно как правило, а ошибки потока можно самому ловить в логике скрипта и если надо выдавать ошибку через экшен в логгере

  • @UserTrue об ожидании вообще не нужно зачастую выводить, так что в этом плане все супер. Но вот если скрипт завершится с непредвиденной ошибкой, то бишь fail, оно в лог попадет в событии custom-log? Просто это затестить сложно.

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

  • @UserTrue тут просто проблема в том, что нельзя одновременно log и custom-log оставить, будет 2 лога выводится. А весь скрипт пихать в игнор как-то такое себе. Особенно когда и так игнор ошибок в местах где ожидается их вывод расставлен. А вывод в лог того, что не в игноре - это на случай непредведенных ошибок.

    Или можно как-то отслеживать, пришел ли custom-log и не выводить в этом случае log? Просто это ведь 2 отдельных хендлера и по идее никак не сделать.

  • @thepappo я попробую добавить обёртку для ошибок, чтобы они перехвались, не знаю будет ли это работать в 100% случаев.
    А слушать оба события наверное можно, но придется что-то костылить, чтобы понимать было такое событие в кастомном логе или нет

  • Обновил v3.5

    Улучшения касаются отправки событий в вебинтерфейс.

    1. Добавил перехват ошибок и успехов, которые были вызваны не через сам модуль.
      На данный момент модуль перехватывает большинство сообщений за исключением сообщений для ресурсов: 1) ожидание ресурса 2) все данные были обработаны для ресурса
    2. Событие ожидание элемента приходит с пометко level: "bas_warn"

    В node.js вместо console.log следует использовать модуль

    BAS_API(`logger_log({
    	"color": (""),
    	"en": ("hello"),
    	"level": ("info"),
    	"ru": ("Привет")
    })`);
    
  • @UserTrue спасибо за обновочку

  • @llimonix said in Logger:

    @UserTrue спасибо за обновочку

    Пжл, я думал для вебинтерфейса его кроме меня никто не использует xD

  • В планировщике не работает функция logger_log ? или это ток у меня проблема.

  • @biohacker01 said in Logger:

    В планировщике не работает функция logger_log ? или это ток у меня проблема.

    Не проверял, но думаю, что нет. Но теоретически можете в исходнике модуля заменить имя события 'custom-log' на 'log' или дублировать событие этим именем.
    (engine.js метод emit)

  • Спасибо большое вам! Мой внутренний перфекционист счастлив после установки этого модуля)))

  • Возможно ли сделать настройку размера текста ?