node.js - Nodejs Winston session ID 日志记录

标签 node.js express

我正在将winston与node和express一起使用,并且找不到合适的方法来简单地使用express的session.id来增加所有日志条目(通过广泛的google和SO搜索) - 有什么建议吗?

最佳答案

对于 Express 请求日志,您可以执行以下操作:

var morgan  = require('morgan'),
    winston = require('winston');
// Define a new format token
morgan.token('id', function(req, res) {
  return req.session ? req.session.id : 'N/A';
});
// Create a stream using Winston for logging
var winstonStream = {
  write: function(msg, encoding) {
    winston.info(msg);
  }
};
// Create a logger middleware that uses the new token in format
// and writes to Winston logging stream
var expressLogger = morgan(morgan.combined + ' - :id', { stream: winstonStream });

app.use(expressLogger);

不知道如何为每个 winston[level]() 调用实现相同的效果,因为您确实需要手头有请求对象(除了将对象传递给每个位之外)代码)。

关于node.js - Nodejs Winston session ID 日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27907279/

相关文章:

javascript - 从不同的目录运行 Node 应用程序使静态文件夹变得有趣

node.js - 如何知道 Node js中redis中给定键的值类型

javascript - Mongoose 更新多个文档上的嵌套对象

javascript - 在 nodejs 中使用 googleapis 的服务帐户和 JWT 身份验证发送邮件失败

javascript - nodejs 不发送 websocket 到浏览器

node.js - 使用 node.js '@azure/storage-blob' 包从 Azure 存储流式传输视频

http - Express - 如何阻止无效的 http 方法?

javascript - 更新特定模型后,如何让 keystoneJS 运行函数?

css - 带有 Express 和 SASS 的 Node.JS - 未应用编译的 CSS 文件

node.js - Nodejs Express Multer 文件上传 - 根据表单数据处理路由中的响应