Node.js Winston中的对象或字符串出现格式错误

Node.js Winston中的对象或字符串出现格式错误,node.js,winston,loggly,Node.js,Winston,Loggly,我有一个问题,我的错误显示不同,因为有些是字符串,有些是对象。当它们是一个对象时,整个“msg”就是我需要输出的,但是当它只是一个字符串时,只输出字符串就可以了。如果我删除printf行,它可以很好地打印,但我需要printf,因为我想截断输出到前200个字符的日志(这部分还没有添加,我想先获得正确的输出) 一旦我添加printf,它就开始以不同的方式处理错误 如果有更简单的方法截断输出,我将非常乐意删除printf 到目前为止,我让它工作的唯一方法是检查对象是否有“errno”,但这似乎是一种

我有一个问题,我的错误显示不同,因为有些是字符串,有些是对象。当它们是一个对象时,整个“msg”就是我需要输出的,但是当它只是一个字符串时,只输出字符串就可以了。如果我删除printf行,它可以很好地打印,但我需要printf,因为我想截断输出到前200个字符的日志(这部分还没有添加,我想先获得正确的输出)

一旦我添加printf,它就开始以不同的方式处理错误

如果有更简单的方法截断输出,我将非常乐意删除printf

到目前为止,我让它工作的唯一方法是检查对象是否有“errno”,但这似乎是一种“hacky”方法

const winston = require('winston');
const {Loggly} = require('winston-loggly-bulk');
const tag = (process.env['HOSTNAME']) ? (process.env['HOSTNAME']) : 'localhost';
const {splat, combine, printf, colorize, timestamp, simple} = winston.format;
let alignColorsAndTime = combine(
    colorize({
        all:true
    }),
    timestamp({
        format:"YYYY-MM-DD HH:MM:SS"
    }),
    printf(msg => {
        if (msg.errno !== undefined) {
            msg.message = JSON.stringify(msg)
        }
        return msg.level + msg.timestamp + msg.message;
    })
);

//Logging levels: error: 0, warn: 1, info: 2, verbose: 3, debug: 4, silly: 5
winston.add(new Loggly({
    token: [REMOVED],
    subdomain: [REMOVED],
    tags: [[REMOVED] + process.env['ENVIRONMENT'], tag],
    json: true,
    level : (process.env['LOG_LEVEL']) ? (process.env['LOG_LEVEL']) : 'debug'
}));
winston.add(new winston.transports.Console({
    format: alignColorsAndTime,
    level : 'debug',
}));


module.exports = winston;