记录我的 express js 网络服务器的最佳方式是什么?内置的 express.logger() 只是在屏幕上显示日志。我也可以将它们记录到 /log 文件夹中的文件中吗?当前记录器还会自动记录请求和响应。我需要将一些应用程序数据记录到日志文件中。这可以使用 express.logger 完成吗?
问候, 拉利斯
要将 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。
查看 express 扩展的连接中间件。express.logger() 与 connect.logger() 相同:
http://expressjs.com/api.html#middleware
http://www.senchalabs.org/connect/logger.html
记录器有一个流选项,可以设置你想要输出的位置。默认情况下,它将它发送到标准输出。您还可以指定要使用的日志格式。
你应该试试温斯顿
var logger = new (winston.Logger)({
transports: [
new (winston.transports.Console)(),
new (winston.transports.File)({ filename: 'somefile.log' })
]
});
温斯顿有点傻,多传输记录 == tee(1),或者只是尾随文件并传输数据,就像馅饼一样简单
使用 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}));
对于 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!')
})
您应该为 Node.js 尝试集群http://learnboost.github.com/cluster/。使用 express 构建应用程序,而集群接管包括日志记录在内的其余任务。