Я настроил файлы журнала с помощью скрипта узла. В частности, я произвел некоторую замену строк в файле, проанализировал его в JSON и записал обратно в новый файл.
Я также использовал пакет jsonpath npm, чтобы записать только необходимое мне свойство в текстовый файл.
Вот полное решение, если кто-то может посчитать его полезным (я знаю, что это некрасиво, но сразу после чего-то, что сработало бы один раз: /)
// Make sure we got a filename on the command line.
if (process.argv.length < 3) {
console.log('Usage: node ' + process.argv[1] + ' FILENAME');
process.exit(1);
}
// Read the file and print its contents.
var fs = require('fs')
, jp = require('jsonpath')
, filename = process.argv[2]
, property = process.argv[3]
, debug_mode = process.argv[4]
, only_messages = process.argv[5];
fs.readFile(filename, 'utf8', (err, data) => {
if (err) throw err;
const _newNameArr = filename.split('/');
const _filename = _newNameArr[_newNameArr.length - 1];
const replaced = data.replace(/[\n\r]/g, '');
const replacedAgain = replaced.replace(/\}[\s]*\{/g, '},{');
const _destFileName = (only_messages == 'true')
? `messages_${_filename}`
: `${property || 'full'}_${_filename.replace('.txt', '.json')}`;
if (debug_mode == 'true') {
fs.writeFile('DEBUG-replaced_' + _destFileName, replacedAgain, (err) => {
if (err) throw err;
console.log('The file has been saved!');
});
}
const parsed = JSON.parse(replacedAgain);
const _fileContent = (only_messages == 'true')
? jp.query(parsed, '$..message').join('\n')
: JSON.stringify(parsed, (property ? [property] : null), 1);
fs.writeFile(_destFileName, _fileContent, (err) => {
if (err) throw err;
console.log(`The file, ${_destFileName}, has been saved!`);
});
});