#node.js #json #formatting #winston
#node.js #json #форматирование #winston
Вопрос:
Я использую 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:
Регистратор записывает записи в файл по ходу работы, как он будет закрывать файл для каждого оператора? При желании вы можете легко отформатировать стандартный файл в соответствующий объект json в любой момент:
const readline = require('readline').createInterface({
input: require('fs').createReadStream('logfile')
})
const log = []
readline.on('line', line => log.push(JSON.parse(line)))
Вы можете легко сделать что-то подобное с помощью bash