Как я могу получить пользовательский вывод, используя winston в сочетании с simple ()? - PullRequest
0 голосов
/ 04 апреля 2020

Я пытаюсь получить следующий формат, используя winston: 2020-01-01 [INFO]: test с раскрашенной частью уровня, вместо этого я получаю

info: test

Как я могу получить нужный мне формат ищу?

import winston from "winston";

const format = winston.format.combine(
  winston.format.align(),
  winston.format.colorize(),
  winston.format.errors({ stack: true }),
  winston.format.printf(
    ({ level, message }) => `[${level.toUpperCase()}]: ${message}`
  ),
  winston.format.simple(),
  winston.format.timestamp({ format: "YYYY-MM-DD HH:mm:ss" })
);

export const logger = winston.createLogger({
  level: process.env.NODE_ENV === "production" ? "info" : "debug",
  transports: [new winston.transports.Console({ format })],
});

1 Ответ

0 голосов
/ 04 апреля 2020

Исправлено с использованием следующего

import winston from "winston";

const format = winston.format.combine(
  winston.format(info => ({ ...info, level: info.level.toUpperCase() }))(),
  winston.format.align(),
  winston.format.colorize(),
  winston.format.errors({ stack: true }),
  winston.format.prettyPrint(),
  winston.format.simple(),
  winston.format.splat(),
  winston.format.timestamp({ format: "YYYY-MM-DD HH:mm:ss" }),
  winston.format.printf(
    ({ timestamp, level, message }) => `${timestamp} [${level}]: ${message}`
  )
);

export const logger = winston.createLogger({
  level: process.env.NODE_ENV === "production" ? "info" : "debug",
  transports: [new winston.transports.Console({ format })],
});
...