67

记录我的 express js 网络服务器的最佳方式是什么?内置的 express.logger() 只是在屏幕上显示日志。我也可以将它们记录到 /log 文件夹中的文件中吗?当前记录器还会自动记录请求和响应。我需要将一些应用程序数据记录到日志文件中。这可以使用 express.logger 完成吗?

问候, 拉利斯

4

7 回答 7

73

要将 express 或 connect 日志发送到文件,请使用 Node 的writeStream。例如将快速日志发送到./myLogFile.log

使用以下命令以附加模式打开文件流:

var logFile = fs.createWriteStream('./myLogFile.log', {flags: 'a'}); //use {flags: 'w'} to open in write mode

然后,在您的快速配置中使用:

app.use(express.logger({stream: logFile}));

也应该适用于 connect.logger。

于 2012-01-26T12:36:39.820 回答
49

查看 express 扩展的连接中间件。express.logger() 与 connect.logger() 相同:

http://expressjs.com/api.html#middleware

http://www.senchalabs.org/connect/logger.html

记录器有一个流选项,可以设置你想要输出的位置。默认情况下,它将它发送到标准输出。您还可以指定要使用的日志格式。

于 2011-03-31T17:21:35.590 回答
20

你应该试试温斯顿

var logger = new (winston.Logger)({
  transports: [
    new (winston.transports.Console)(),
    new (winston.transports.File)({ filename: 'somefile.log' })
  ]
});
于 2011-03-30T22:43:05.967 回答
8

温斯顿有点傻,多传输记录 == tee(1),或者只是尾随文件并传输数据,就像馅饼一样简单

于 2011-09-27T15:11:59.067 回答
8

使用 log4js:

var log4js = require('log4js');
log4js.configure({
    appenders: [{type: 'console'},
                {type: 'file', filename: 'express.log', category: 'dev'}]
});

var logger = log4js.getLogger('dev');
logger.setLevel('DEBUG');

app.use(log4js.connectLogger(logger, {level: log4js.levels.DEBUG}));
于 2014-03-24T22:03:56.660 回答
6

对于 HTTP 请求日志记录:https ://github.com/expressjs/morgan#write-logs-to-a-file

var express = require('express')
var fs = require('fs')
var morgan = require('morgan')

var app = express()

// create a write stream (in append mode)
var accessLogStream = fs.createWriteStream(__dirname + '/access.log', {flags: 'a'})

// setup the logger
app.use(morgan('combined', {stream: accessLogStream}))

app.get('/', function (req, res) {
  res.send('hello, world!')
})
于 2015-04-26T12:49:57.450 回答
4

您应该为 Node.js 尝试集群http://learnboost.github.com/cluster/。使用 express 构建应用程序,而集群接管包括日志记录在内的其余任务。

  1. app.use(express.logger()); // 在您的快速应用程序中,例如:app.js
  2. cluster.use(cluster.logger('logs')) ; // 在您的集群服务器中,例如:server.js
于 2011-10-17T04:10:34.183 回答