我有一个Express项目,我将其设置为登录文件:
logPath = '/mnt/log/api.log'
logfile = fs.createWriteStream logPath, {flags: 'a'}
loggingOptions =
format: 'default'
stream: logfile
app.use express.logger(loggingOptions)
这适用于记录请求,但我想将自己的消息添加到日志中,但我无法弄清楚如何。 console.log
未被重定向,并且似乎没有创建我可以写入的“记录器”对象。
那么我唯一的选择是传递对文件流的引用并写入该文件吗?
答案 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!');
});