5

我有一个 Express 项目,并将其设置为记录到文件:

logPath = '/mnt/log/api.log'
logfile = fs.createWriteStream logPath, {flags: 'a'} 

loggingOptions = 
  format: 'default'
  stream: logfile

app.use express.logger(loggingOptions)

这适用于记录请求,但我想将自己的消息添加到日志中,但我不知道如何。console.log没有重定向,并且似乎没有创建我可以写入的“记录器”对象。

那么我唯一的选择是传递对文件流的引用并写入它吗?

4

3 回答 3

0

我不知道如何完全按照您的要求做,但这就是我所做的,到目前为止效果很好。

我配置了快速记录器(如果您正在寻找文档,实际上是连接记录器),如下所示,所有日志输出都进入标准输出。我可以使用 console.log("blah blah") 打印到相同的输出。

app.use(express.logger("default"));

在生产服务器上,我将节点的所有输出重定向到日志文件。

这在开发过程中也很有效,因为我在 shell 窗口中运行 node 并且可以看到所有相同的输出。(实际上我在开发过程中使用 express.logger("dev") 因为输出对于开发工作来说更干净。)

于 2013-01-02T01:25:04.570 回答
0

您可以创建自己的日志记录中间件:

app.use (req, res, next) ->
   logFile.write "anything you want"
   next()
于 2014-03-20T22:47:59.940 回答
0

像其他中间件一样定义错误处理中间件,除了使用四个参数而不是三个,特别是使用签名(err、req、res、next)):

    app.use(function(err, req, res, next){
  console.error(err.stack);
  res.status(500).send('Something broke!');
});

http://expressjs.com/guide/error-handling.html

于 2015-02-25T12:23:07.513 回答