170 похожих чатов

Добрый день, возможно ли для веб-приложения на node.js оттрасировать

выполнение кода, чтобы получить последовательность вызова функций при обработке веб-запроса?

7 ответов

16 просмотров

ну первое что лезет в голову это просто нодовский отладчик

попробуй написать в какой-нибудь из функций console.trace('') const http = require('http') http.createServer((req, res) => { a() }).listen(3000) function a() { console.trace('') } Trace at a (/home/.../server.js:7:10) at Server.<anonymous> (/home/.../server.js:3:2) at Server.emit (node:events:376:20) at parserOnIncoming (node:_http_server:907:12) at HTTPParser.parserOnHeadersComplete (node:_http_common:126:17)

Также можешь загуглить очень древнюю штуку такую как arguments.callee Она хоть и считается устаревшей, но раньше с ее помощью можно было тоже stacktrace отследить

и еще один вариант function a() { try { throw new Error() } catch(err) { console.log(err.stack) } } Больше ничего не могу вспомнить

однако если у него большая вложенность вызовов функции то думаю обычный пошаговый отладчик лучше будет чем писать в каждом месте console.trace

создать als в роуте. назначить в als каждому запросу uuid, в логер внедрить экземпляр als и логировать его, в функциях использовать данный логгер.

app.use((req, res, next) => { const asyncLocalStorage = diContainer.get<any>(TYPES.AsyncLocalStorage); asyncLocalStorage.run(new Map(), () => { asyncLocalStorage.getStore().set("requestId", uuidv4()); next(); }); });log(...args): void { const date = moment(new Date()).format("DD.MM.YY HH:mm:ss.SSS"); const store = this.asyncLocalStorage.getStore(); const logId = store ? store.get("requestId") : "context-is-lost"; console.log(date, logId, ...args); }можно без di, просто через экспорт.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта