如何在浏览器中显示Bunyan日志?

Dan*_* C. 5 browser node.js bunyan

我有一个在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.");
});
Run Code Online (Sandbox Code Playgroud)

这使我能够访问http://server/logs并获得所有日志文件的列表,我可以单击它们并将它们显示在浏览器中。问题在于它们仍然只是原始的json,而不是一种非常友好的格式。

我想要的是在浏览器中进行打印,就像在cli中用bunyan打印的方式一样,非常漂亮。

有什么建议么?我已经搜寻了数小时,寻找可以做到这一点但找不到任何东西的东西。

谢谢!

小智 -1

如果您可以在应用程序中添加一些 HTML,只需使用一些 ajax 请求加载 Bunyan 日志即可。由于这只是一个 JSON 响应,您可以根据需要对其进行格式化。现代浏览器允许格式化 JSON 以使其更具可读性。

将 JSON 对象转换为字符串时,可以使用空格缩进:

JSON.stringify(bunyanLogsObject, null, 2);
Run Code Online (Sandbox Code Playgroud)

在哪里:

  • bunyanLogsObject- 是你的日志
  • null- 替换者,请阅读下文
  • 2- 缩进的空格数,前提是此参数实际上打开了格式设置

作为替换器,您可以提供一个函数来进一步格式化输入或要显示的白名单属性数组。更多信息可以在 MDN 上找到。