我正在基于expressjs构建一个应用程序,我想在其中记录所有事件.我能找到温斯顿,看起来很酷.无论如何,我正在寻找一种方法,如何将它连接到我的expressjs应用程序.

我还想在应用程序中登录.我的请求并不是那么简单,所以我想在我的应用程序中记录所有内容(不仅仅是请求).

我目前的情况:

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, res, 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, res, next) { new something().getAll(req, res, next); });
};

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

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

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

module.exports = Something;

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

所以我认为,创建一些记录器库的好方法可能是使用:

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

包含记录器定义.另一个我不知道如何解决的问题是如何给数据加前缀.我有很多并发请求,我想看看每个请求调用了哪个调试消息.

推荐答案

我们使用winston,它可能是目前最强大的日志(log)记录软件包.

我们最终完全按照你的建议进行了设置.创建一个公共库,用于围绕我们的定义和传输包装logger对象,然后处理我们希望以不同方式处理的任何其他类型的对象.

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

Node.js相关问答推荐

NX无法使用缓存运行根级脚本

运行JEST测试时找不到模块&q;错误

如何在Node.js 中设置图表js的背景色

Sequelize-测试使用虚拟场更新模型

Node-Red Tasmota 错误:连接 ECONNREFUSED 192.168.77.21:1883

我需要聚合两个 MongoDB 集合

使用 Nodejs 获取 Firebase 云消息传递历史记录

每秒从套接字传来的数据有哪些存储方式?

将 express js app.use() 移动到另一个文件

nuxt:在 docker 镜像中找不到

Node.js + Express + Handlebars.js + 局部视图

如何在 Mongoose 模式中设置数组大小限制

socket.io 发出回调合适吗?

Sequelize 基于关联的查找

用一级 try ... catch 捕获 JavaScript Promise 中的错误

fs.createWriteStream 不会立即创建文件?

nodejs:Ajax 与 Socket.IO,优缺点

Node.js 与 .net 中的异步/等待

node.js 找不到模块mongodb

mongoose 填充与对象嵌套