我最近将Winston添加到我的nodejs后端,并将其与morgan结合起来记录每个API调用。但是我错过了bytesize属性,该属性使我知道仅使用morgan的每个响应大小有多大。它可以让我更清楚地了解哪个API正在获取太多数据。任何帮助将是巨大的:)

仅摩根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
}));

最佳答案

注意:我们可以更改日志格式。

使用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以获取更多日志令牌

关于node.js - 需要Morgan&Winston记录使用btyesize的api响应,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56848038/

10-10 09:08