Google云端平台 - 使用多行记录

时间:2017-03-22 18:02:10

标签: javascript node.js logging google-cloud-platform

我们正在使用Node.js服务器,并在Google云端平台上提供日志。

问题是,如果我们做一个日志条目并且我们把对象放在里面,它被序列化为多行输出,它就不会“堆叠”。

因此,如果我们有100行的对象,它会在谷歌中创建100行输出,这实际上很难阅读,我们无法对其进行“分组”。

在其他服务中,输出始终是堆叠的(loggly,logsene)。

你知道如何叠加输入吗?我们使用Winston进行日志记录(将Console作为输出之一)

2 个答案:

答案 0 :(得分:2)

尝试选择stackdriver' winston_log'。

默认情况下,您收到stdout,这给了我与多行相同的问题。

答案 1 :(得分:1)

这是解决方案(PS:感谢GordonHo在这个问题上给我打电话):

const winston = require('winston');
const config = require('config');
const _ = require('lodash');

function transportsMethod() {
    const transports = [];
    if (config.params.oneLineWinston === true) {
        transports.push(new (winston.transports.Console)({
            json: true,
            stringify: (obj) => JSON.stringify(obj),
        }));
    } else {
        transports.push(new (winston.transports.Console)({json: true}));
    }
    return transports;
}

const logger = new winston.Logger({
    level: winstonLevel,
    transports: transportsMethod(),
});

module.exports = logger;