Объединить хвост -F и JSON - PullRequest
       4

Объединить хвост -F и JSON

7 голосов
/ 12 марта 2012

Мои лог-файлы содержат по одному объекту json на строку. Я использую [json] [1], чтобы получить читабельный вывод через

cat mylog.log | json -a field1 field2

Теперь я хотел бы иметь

tail -F mylog.log | json -a field1 field2

для непрерывного вывода. Но, похоже, это не работа, оболочка просто висит. Если я использую &| для избежать проблем с буферизацией, вывод Я бегу только cat.

mylog.log выглядит так:

{"field1": entry1a, "field2": entry2a, "field3": entry3a}
{"field1": entry1b, "field2": entry2b, "field3": entry3b}

Есть предложения?

[1] https://github.com/trentm/json

1 Ответ

12 голосов
/ 12 марта 2012

Похоже, json сначала загружает целое stdin в буфер и только затем обрабатывает данные , но вы все равно сможете добиться обработки потока, вызывая его для каждой из строк добавлено в файл журнала, примерно так:

tail -F mylog.log | while read line; do echo "$line" | json -a field1 field2; done
...