Ошибки форматирования, когда объекты или строки в Winston - PullRequest
1 голос
/ 03 октября 2019

У меня проблема с тем, что мои ошибки отображаются по-разному, некоторые из них являются строками, другие - объектами. Когда они являются объектом, мне нужно вывести всю «msg», но когда это просто строка, тогда просто вывести строку - это нормально. если я удаляю строку printf, она печатается нормально, но мне нужен printf, потому что я хочу обрезать журналы, выводимые до первых 200 символов (эта часть еще не добавлена, сначала я хочу получить правильный вывод).

Как только я добавлю printf, он начнет обрабатывать ошибки по-разному.

Если есть более простой способ обрезать вывод, я был бы более чем счастлив удалить printf.

Единственный способ заставить его работать до сих пор, это проверить, есть ли у объекта "errno", но это выглядит как "хакерский" способ сделать это.

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;
...