Node.js 什么';expressjs日志记录的最佳实践是什么?

Node.js 什么';expressjs日志记录的最佳实践是什么?,node.js,logging,express,Node.js,Logging,Express,我正在基于expressjs构建一个应用程序,我想在其中记录所有事件。我能找到温斯顿,看起来很酷。无论如何,我正在寻找一种方法,如何将它连接到我的expressjs应用程序 我还希望在应用程序内部进行日志记录。我的请求不是那么简单,所以我想在我的应用程序中记录所有内容(不仅仅是请求) 我目前的情况: server.js(我想在此级别记录http请求) 路由/something.js var something = require(__dirname + '/../controller/somet

我正在基于expressjs构建一个应用程序,我想在其中记录所有事件。我能找到温斯顿,看起来很酷。无论如何,我正在寻找一种方法,如何将它连接到我的expressjs应用程序

我还希望在应用程序内部进行日志记录。我的请求不是那么简单,所以我想在我的应用程序中记录所有内容(不仅仅是请求)

我目前的情况:

server.js(我想在此级别记录http请求)

路由/something.js

var something = require(__dirname + '/../controller/something.js');

module.exports = function(app) {
    app.get('/v1/something', function(req, res, next) { new something().getAll(req, res, next); });
};
controller/something.js(我想使用同一个记录器进行调试日志记录)

我考虑的另一件事是记录从控制器(例如模型或其他库)调用的函数中的所有事件

因此,我认为,创建一些记录器库的好方法可能是使用以下方法:

var logger = require(__dirname + '/../libraries/logger.js');

包含记录器定义。我不知道如何解决的另一个问题是如何为数据添加前缀。您知道,我有很多并发请求,我想看看每个请求调用了哪个调试消息。

如果您使用的是express,您可能需要查看包。然后,您可以使用winston作为中间件,轻松地记录请求/错误,而不会使代码混乱

我们使用的,它可能是最强大的日志记录包

我们最终完全按照你的建议进行了设置。创建一个公共库,用于围绕我们的定义和传输包装logger对象,然后处理我们希望以不同方式处理的任何其他类型的对象


我喜欢以下Rails样式的日志记录:

[2017-11-02T11:13:54.545 #07738a81] Started GET /api/url for 10.0.0.1
[2017-11-02T11:13:54.550 #07738a81] Completed 200 31739 in 5.635 ms
下面的代码可以做到这一点

addRequestId = require('express-request-id')(setHeader: false)
app.use(addRequestId)

morgan = require('morgan')
morgan.token('id', (req) -> req.id.split('-')[0])

app.use(morgan(
  "[:date[iso] #:id] Started :method :url for :remote-addr",
  immediate: true))

app.use(morgan("
  [:date[iso] #:id] Completed :status :res[content-length] in :response-time ms"))

app.use('/api', router)

谢谢,我早些时候发现了这个,我认为它非常有用。不过,将其用作http请求记录器很容易,但我也希望在应用程序内部使用它expressjs现在默认配备morgan模块。当您触发
express generator
call时,您是登录到文件还是数据库?当前我们登录到文件。使用logrotate管理旧日志。我们正在使用Loggly transportReader进行测试小心,这是Coffeescript(细长箭头)
[2017-11-02T11:13:54.545 #07738a81] Started GET /api/url for 10.0.0.1
[2017-11-02T11:13:54.550 #07738a81] Completed 200 31739 in 5.635 ms
addRequestId = require('express-request-id')(setHeader: false)
app.use(addRequestId)

morgan = require('morgan')
morgan.token('id', (req) -> req.id.split('-')[0])

app.use(morgan(
  "[:date[iso] #:id] Started :method :url for :remote-addr",
  immediate: true))

app.use(morgan("
  [:date[iso] #:id] Completed :status :res[content-length] in :response-time ms"))

app.use('/api', router)