node.js – expressjs日志记录的最佳做法是什么?

我正在建立一个基于expressjs的应用程序,我想记录所有事件。我可以找到winston,这似乎很酷。无论如何,我正在寻找一种方式如何连接到我的expressjs应用程序。

我还想要的是在应用程序内部进行日志记录。我的reqeusts不是那么简单,所以我想记录一切内部我的应用程序(不只是请求)。

我目前的情况:

server.js(我想在这个级别上记录http请求)

var express = require('express');
var app = express();
var fs = require('fs');

// Post parser
app.configure(function(){
    app.use(express.bodyParser());
});

// Load routes
require('fs').readdirsync(__dirname + '/routes').forEach(function(file) {
    require(__dirname + '/routes/' + file)(app);
});

// 404: Not found
app.use(function(req,res,next){
    res.json(404,{ERROR: 'Page not found.'});
});

// 500: Error reporing
app.use(function(err,req,next){
    console.error(err.stack);
    res.json(500,{ERROR: 'Internal server error.'} );
});

// Startup new server
app.listen(900);

routes / something.js

var something = require(__dirname + '/../controller/something.js');

module.exports = function(app) {
    app.get('/v1/something',function(req,next) { new something().getAll(req,next); });
};

controller / something.js(我想使用相同的日志记录器进行调试日志记录)

/**
 * Constructor
 *
 */
function Something() {
};

/**
 * Get all the data
 *
 */
Something.prototype.getAll = function(req,next) {
    // I want to log some very important information here
    res.json({result: true,data: ['hello','hi','Ciao','buf']});
}

module.exports = Something;

我想到的另一件事是记录从控制器(例如模型或其他库)调用函数中的所有事件。

所以我认为,好的方法可能创建一些logger库,将被调用使用:

var logger = require(__dirname + '/../libraries/logger.js');

包含记录器定义。其他问题我不知道如何解决是如何前缀数据。你知道,我有很多并发请求,我想知道每个请求调用哪个调试消息。

谢谢

解决方法

我们使用winston,它可能是最强大的日志包。

我们最终设置完全像你建议的。创建一个公共库,用于在我们的定义和传输周围环绕记录器对象,然后处理我们想要以不同方式处理的任何其他类型的对象。

https://gist.github.com/rtgibbons/7354879

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...