Google Cloud Platform - 多行日志记录

lib*_*bik 7 javascript logging node.js google-cloud-platform

我们正在使用 Node.js 服务器并在 Google Cloud Platform 上有日志。

问题是,如果我们做一个日志条目并将对象放入其中,该对象被序列化为多行输出,则它不是“堆叠”的。

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

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

你知道如何堆叠输入吗?我们正在使用 Winston 进行日志记录(将控制台作为输出之一)

lib*_*bik 2

这就是解决方案(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;
Run Code Online (Sandbox Code Playgroud)