JSSDK: logger и Error.stack
// Добавляем запись в логер logger.add("метка", { /* какие-то даныне */ });
// На самом деле в лог будет добавлен экземляр logger.Entry { #! type: "log", // Тип записи `scope` или `log` #! label: "...", // какая-то метка #! args: ..., // какие-то даныне #!+ meta: { #! fn: "add", // имя функции #! file: "module.js", // файл в которым был #! line: 123, // строка в которой был вызван лог #! column: 1 // символ #!- } }
var model = { #!+ fetch: function (query) { #! logger.add("data", query); #!+ return logger.wrap(fetch("path/to", { body: query })).then( function (response) { #!+ logger.add("success", response.status); #!- return response.json(); }, function (response) { #!+ logger.add("fail", response.status); #!- return Promise.rejected(response.status); } #!- ); #!- }.logger("model.fetch") };
var model = { fetch: function (query) { #! var logScope = logger.scope("model.fetch", query); #!+ return logScope.wrap(fetch("path/to", { body: query })).then( function (response) { #!+ logger.add("success", response.status); #!- return response.json(); }, function (response) { #!+ logger.add("fail", response.status); #!- return Promise.rejected(response.status); } #!- ); } };
// Где-то в коде $("#button").on("click", function () { #!+ model.fetch({ offset: 0, limit: 20 }).then(function () { #! logger.add("Model fetched"); #!- }); });
Folder.findOne(123).then(function (folder) { #! logger.add("folder.loaded", folder.id); #!+ // А сейчас мы будем делать что-то не хорошое #!- folder.save("name", "Wow!"); #!+ // или setTimeout(function () { folder.remove(); #!- }, 10); });
Да, я знаю, что много «лишней» информации, но это только пока
Это веб-интерфейс для анализа стека ошибки, а теперь и лога.