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);
ルート/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 (デバッグ ログに同じロガーを使用したい)
/**
* 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;
私が考えているもう 1 つのことは、コントローラー (モデルや他のライブラリーなど) から呼び出される関数のすべてのイベントをログに記録することです。
したがって、次を使用して呼び出されるロガーライブラリを作成する良い方法があると思います。
var logger = require(__dirname + '/../libraries/logger.js');
ロガー定義を含みます。解決方法がわからないもう 1 つの問題は、データにプレフィックスを付ける方法です。ご存知のように、私は多くの同時リクエストを抱えており、各リクエストによってどのデバッグ メッセージが呼び出されたかを確認したいと考えています。