node.js - ExpressWinston 未登录 200 HTTP 响应代码

标签 node.js express logging winston

我正在使用 ExpressWinston 登录 Node.js 应用程序。我们可以记录每个正在调用的静态资源的请求吗?

如果找到文件 (200),记录器不会记录,但会在未找到文件 (404) 时记录。 例如,如果请求有效,如 http://domain/css/existingfile.css ,记录器不记录。 但是,如果请求无效,如 http://domain/css/non-existingfile.css ,记录器使用正确的 404 状态代码进行记录。

当文件也被发现时我需要日志(200)。如何配置expressWinston以记录所有具有服务器返回的任何状态代码的请求?

问候

最佳答案

我下面的配置使用 ExpressWinston 和 winston-mongodb 将所有请求记录在 mongodb 数据库中,无论状态代码如何。您可以根据需要将传输更改为控制台或文件。您将根据您的白名单获取每个请求和响应的相关元数据。

expressWinston.responseWhitelist.push('body')

const requestLog = expressWinston.logger({
  transports: [
    new winston.transports.MongoDB({
      db: db,
      options: {
        useNewUrlParser: true,
        poolSize: 2,
        autoReconnect: true
      }
    })
  ],
  meta: true,
  msg: (req, res) => 'HTTP {{req.method}} {{req.url}};',
  requestWhitelist: [
   'url',
   'method',
   'httpVersion',  
   'originalUrl',
   'query',
   'body'
  ]
});

只需将 Transports 数组中的代码替换为

transports: [
  new winston.transports.Console()
]

如果你想在控制台中显示。

关于node.js - ExpressWinston 未登录 200 HTTP 响应代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55711648/

相关文章:

node.js - webpack 5 错误 "Can' t 解析 'uglify-js' , '@swc/core' , 'esbuild'

node.js - 访问 Mongoose 模型的快速 Controller 测试?

Linux 非阻塞 fifo(按需日志记录)

python - 连续循环登录

ruby - 如何在请求范围之外访问 Sinatra 的记录器

node.js - Socket.io - 共享 "friends activity"设计模式

node.js - EJS和WebStorm,错误错误

session - 从 socket.io 回调中修改 session 数据

javascript - 如何跟踪消息的 react 数量?

node.js - 服务模拟器和 Echo 中的 Alexa 技能日期是否相同?