我在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中打印一样,以一种漂亮的方式。
有什么建议吗?我已经搜索了几个小时,看起来会做到这一点,却找不到任何东西。
谢谢!
答案 0 :(得分:3)
您可以使用frontail在投放的html页面中显示日志!
你可以使用bunyan-format包来很好地格式化bunyan日志输出!
答案 1 :(得分:-1)
如果你可以在你的应用程序中添加一些HTML,只需加载带有一些ajax请求的bunyan日志。由于这只是一个JSON响应,您可以根据需要对其进行格式化。现代浏览器允许格式化JSON以使其更具可读性。
将JSON对象转换为字符串时,可以使用空格缩进它:
JSON.stringify(bunyanLogsObject, null, 2);
其中:
bunyanLogsObject
- 是您的日志null
- 替换者,请阅读以下内容2
- 缩进的空格数,提供此参数实际上会打开作为替换器,您可以提供进一步格式化输入或要显示的白名单属性数组的功能。可以找到更多信息at MDN。