node.js に実装されたサーバーがあり、ロギングには Bunyan を使用しています。これまで、問題をデバッグする必要があるときは、コンソールでログを確認するか、古いログ ファイルを/bunyan/bin/bunyan <log_file.log>
. これは、サーバーに vnc または ssh で接続する必要があるため、理想とはほど遠いものになりつつあります。古いログを見ていると、bunyan cli で探しているものを見つけるのに長い時間がかかります。
ロギング機能を拡張してログ ファイルを提供し、ブラウザで表示できるようにしたいと考えています。これまでのところ、これは私が実装したものです:
var express = require('express');
var app = express();
var bunyan = require('bunyan');
var serveIndex = require('serve-index');
var log = bunyan.createLogger({
name: 'server',
streams: [
{
level: 'info',
stream: process.stdout
},
{
type: 'rotating-file',
level: 'info',
path: __dirname+'/logs/server-logs.log',
period: '1m',
count: 12
}
]
});
app.use('/logs', serveIndex('logs', {'icons': true}))
app.get('/logs/*',function(req,res)
{
var file_name = __dirname + '/logs/' + JSON.stringify(req.params['0']);
file_name = file_name.replace(/"/g, '');
log.info(file_name);
var obj = fs.readFileSync(file_name, 'utf8');
res.format({
'application/json': function(){
res.send(obj);
},
'default': function(){
res.status(406).send('Not Acceptable');
}
});
});
/*Run the server*/
app.listen(3005,function()
{
log.info("Started.");
});
これによりhttp://server/logs
、すべてのログ ファイルのリストにアクセスできるようになり、それらをクリックしてブラウザに表示することができます。問題は、それらがまだ生の json であり、読みやすい形式ではないことです。
私が望むのは、bunyan が cli で印刷するのと同じように、ブラウザーできれいに印刷することです。
助言がありますか?これを行うものを探して何時間も検索しましたが、何も見つかりませんでした。
ありがとう!