node.js - 在nodejs中记录日志并获取参数

标签 node.js logging

我正在尝试为nodejs制作简单的记录器来处理post和get请求,但是我遇到了问题,由于node-js的非阻塞特性,参数是在系统打印响应日志后打印的这是我的代码

process.stdout.write(createReqFormat(req));

if(req.method !== 'GET') {
  var form = new formidable.IncomingForm();
  form.parse(req, function(err, fields, files){
    process.stdout.write('\n Parameters:' + util.inspect(fields));
  });
}

res.on('finish', function(){
  process.stdout.write(createResFormat(res));
});
next();

目前我只打印 post 参数的参数,但这已经杀了我。

Started POST /post for 127.0.0.1 at Mon Apr 27 2015 09:08:36 GMT+0700 (WIB)
Completed 200 OK
Parameters:{ one: '1', kals: '123', test: '1233', 'test[123]': 'dfjksdjf' }

如何使其按正确的顺序打印?

谢谢

最佳答案

解析表单实际上可能比完成响应花费更多时间,因此在完成表单之前不要调用 next (或 res.send) .

process.stdout.write(createReqFormat(req));

res.on('finish', function(){
  process.stdout.write(createResFormat(res));
});

if(req.method !== 'GET') {
  var form = new formidable.IncomingForm();
  form.parse(req, function(err, fields, files){
    if (err) return next(err);
    process.stdout.write('\n Parameters:' + util.inspect(fields));
    next();
  });
} else {
  next();
}

关于node.js - 在nodejs中记录日志并获取参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29886114/

相关文章:

python - 如何通过 Python 管理我的 Instagram 帐户?

java - Log4j DailyRollingFileAppender : Specifying rollover directory

java - Tomcat控制台日志到文件

node.js - 我的 Mongoose 关系出了什么问题?

node.js - 如何使用node js合并两个json的数据

json - 如何读取在node.js中作为命令行参数传递的json字符串?

.net - ASP.NET Web API IExceptionLogger 调用两次

javascript - 无法使用 localhost node.js/express.js 服务器加载 html 图像

node.js - 使用 npm 安装 bcrypt 时出错

c# - Elmah 日志错误页面自定义