Нужно, чтобы Морган и Уинстон зарегистрировали ответ API с помощью btyesize - PullRequest
1 голос
/ 02 июля 2019

Я недавно добавил Winston в свой серверный узел nodejs и объединил его с morgan для регистрации каждого вызова API. Но я пропустил свойства bytesize, которые дали мне знать, насколько велик каждый размер ответа, используя только morgan. Это может дать мне более полную картину того, какой API получает слишком много данных. Любая помощь будет отличной:)

Пример только для Morgan API

GET /v1/users/notifications/5cb5ce7297fc767b4cdf667b?role=user&type=HUBFE&page_size=10&page_num=1 200 - 3252 - 25.553 ms

Теперь реализуем с Winston

info: ::ffff:192.168.0.166 - - [02/Jul/2019:08:09:50 +0000] "GET /v1/searches/nearby?page_size=4&page_num=1 HTTP/1.1" 304 - "http://localhost:8100/" "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1" {"timestamp":"2019-07-02 04:09:50 pm"}

Я объединяю Моргана и Уинстона в моем файле app.js следующим образом

app.use(morgan('combined', {
  stream: winston.stream
}));

1 Ответ

0 голосов
/ 02 июля 2019

Примечание: мы можем вносить изменения в формат журнала.

Использовать morgan-json и в функции json использовать : res [content-length] байтов т.е.

const morgan = require('morgan');
const json = require('morgan-json');
const format = json(':method :url :status :res[content-length] bytes :response-time ms');
app.use(morgan(format));

См. https://www.npmjs.com/package/morgan#tokens для получения дополнительных токенов журнала

...