использовать другое имя свойства для метки времени в nodejs winston logger - PullRequest
0 голосов
/ 04 июня 2019

Я использую регистратор winstonjs с форматером отметки времени.

Я видел, что есть возможность предоставить псевдоним, и я понял, что это способ изменить имя свойства timestamp, но он добавляет только другое свойство timestamp с именем alias ... так например:

    var myFormat = winston.format.combine(winston.format.timestamp({format:'YYYY-MM-DD HH:mm:ss.SSS', alias:'Date'}),
                                          winston.format.json());
    this.winstonLogger = winston.createLogger();
    this.winstonLogger.configure({
        level: 'info',
        format: myFormat,
        transports: [
            new winston.transports.Console(),
          ]
    });

приведет к журналам, подобным этому:

{"level":"info","message":"app is loaded","timestamp":"2019-06-03 17:01:10.054","Date":"2019-06-03 17:01:10.054"}

Таким образом, есть 2 свойства метки времени, одно с именем "timestamp" и одно с именем "Date", как я и просил.

Я использую это неправильно? Есть ли другой способ сделать это?

1 Ответ

0 голосов
/ 04 июня 2019

Странно, но при добавлении псевдонима он будет добавлен в виде отдельной отметки времени. Я думаю, что в качестве обходного пути вы можете попробовать это.

const winston = require('winston'); 
const {createLogger, format, transports, info} = require('winston');

const removeTimestamp = format((info, opts) => {
  if (info.timestamp) {
    delete info.timestamp;
    return info;
  }
});

this.winstonLogger = createLogger({
  // To see more detailed errors, change this to 'debug'
  level: 'info',
  format: format.combine(
      format.timestamp({
        format: 'YYYY-MM-DD HH:mm:ss.SSS',
        alias: 'Date',
      }),
      removeTimestamp(),
      format.json(),
  ),
  transports: [
    new transports.Console()
  ],
});
...