Winston 输出 json 而不是格式化字符串

Winston outputs json instead of formatted string

我在我的应用程序中设置了一个简单的 winston 记录器,如下所示:

function logger(success, msg) {
    let now = new Date().toUTCString()
    let logger = new (winston.Logger)({
        transports: [
            new (winston.transports.File)({ 
                filename: 'log.log',
                timestamp: function() {
                    return new Date().toUTCString();
                },
                formatter: function(options) {
                    return `>>>>>>>>>> ${options.timestamp()} - ${options.level.toUpperCase} - ${options.message}`;
                }
            })
        ]
    });

    if (success) {
        logger.log('info', msg)
    } else {
        logger.log('error', msg)
    }
}

但它没有记录格式化的字符串,而是输出以下内容:

{"level":"error","message":"Nothing to upload","timestamp":"Mon, 23 Apr 2018 13:53:01 GMT"}

想法?我错过了什么吗? (我当然是)

正如您可以在 File 的 winston 文档中找到的那样,如果您不希望文件中的信息为 JSON,则可以将 属性 json 设置为 false对象。 默认这个属性是true

json: If true, messages will be logged as JSON (default true).

你能试着像这样改变你的代码吗:

function logger(success, msg) {
    let now = new Date().toUTCString()
    let logger = new (winston.Logger)({
        transports: [
            new (winston.transports.File)({ 
                filename: 'log.log',
                timestamp: function() {
                    return new Date().toUTCString();
                },
                json: false,
                formatter: function(options) {
                    return `>>>>>>>>>> ${options.timestamp()} - ${options.level.toUpperCase} - ${options.message}`;
                }
            })
        ]
    });

    if (success) {
        logger.log('info', msg)
    } else {
        logger.log('error', msg)
    }
}