Winston - добавить данные журнала в массив JSON - PullRequest
0 голосов
/ 21 марта 2019

Я использую Winston для ведения журнала следующим образом:

const logger = createLogger({
format: format.json(),
transports: [
    new transports.File({
        level: 'error',
        format: format.combine(filterOnly('error'),
            format.timestamp({
                format: 'YYYY-MM-DD HH:mm:ss'
            }),
            format.json()),
        filename: './audit_log/error.json',
    })]
});

Я бы хотел, чтобы мои данные в журнале оказались в файле JSON со структурой, подобной этой:

{
"log": [
    {
        "message": "",
        "level": "",
        "timestamp": ""
    },
    {
        "message": "",
        "level": "",
        "timestamp": ""
    }

Вместо:

{"message":"Bundle uploaded file","level":"error","timestamp":"2019-02- 
28T07:48:59.821Z"}

1 Ответ

0 голосов
/ 21 марта 2019

Регистратор записывает записи в файл, как он идет, как он будет закрывать файл для каждого оператора? Вы можете легко отформатировать стандартный файл в подходящий объект json, если вы хотите в любой момент:

const readline = require('readline').createInterface({
  input: require('fs').createReadStream('logfile')
})

const log = []
readline.on('line', line => log.push(JSON.parse(line)))

Вы можете легко сделать что-то подобное, используя bash

...