сначала запишите метку времени в logger - PullRequest
1 голос
/ 03 июня 2019

Я попытался сделать метку времени первой, но она всегда добавляется в конец json.

Я использовал эту конфигурацию:

    var myFormat = winston.format.combine(winston.format.timestamp({format:'YYYY-MM-DD HH:mm:ss.SSS'}),
                                          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"}

Все, что я хочу, это чтобы она выглядела так:

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

1 Ответ

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

Вы можете разработать собственный форматер

const winston = require('winston');

class TimestampFirst {
    constructor(enabled = true) {
        this.enabled = enabled;
    }
    transform(obj) {
        if (this.enabled) {
            return Object.assign({
                timestamp: obj.timestamp
            }, obj);
        }
        return obj;
    }
}

var myFormat = winston.format.combine(
    winston.format.timestamp({
        format: 'YYYY-MM-DD HH:mm:ss.SSS'
    }),
    new TimestampFirst(true),
    winston.format.json()
);

winstonLogger = winston.createLogger();
winstonLogger.configure({
    level: 'info',
    format: myFormat,
    transports: [
        new winston.transports.Console(),
    ]
});


winstonLogger.info('hello', {
    message: 'test'
});

Дополнительная информация https://github.com/winstonjs/logform

...