如何写入Node.js Connect / Express记录器?

时间:2012-10-18 20:28:07

标签: node.js express connect

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

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

loggingOptions = 
  format: 'default'
  stream: logfile

app.use express.logger(loggingOptions)

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

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

3 个答案:

答案 0 :(得分:0)

我不知道怎么做你要问的问题,但这就是我所做的事情,到目前为止它运作良好。

我配置了快速记录器(如果你正在查找文档,它实际上是连接记录器),如下所示,所有日志输出都转到stdout。我可以使用console.log(“blah blah”)打印到相同的输出。

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

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

这在开发期间也很有效,因为我在shell窗口中运行节点并且可以看到所有相同的输出。 (实际上我在开发过程中使用了express.logger(“dev”),因为输出对开发工作来说更清晰。)

答案 1 :(得分:0)

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

app.use (req, res, next) ->
   logFile.write "anything you want"
   next()

答案 2 :(得分: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