node.js последовательная регистрация в Bunyan
Я добавил Bunyan Logging в различные подсистемы моего приложения. Но когда я вижу файл журнала, я обнаруживаю, что журнал не упорядочен по метке времени. Я предполагаю, что это ожидается из-за асинхронной природы nodejs.
Я хотел знать, есть ли способ изменить это так, чтобы журналы отображались последовательно (в хронологическом порядке)?
1 ответ
Гарантировать порядок сортировки в логгере времени выполнения сложно, если вы также ищете производительность, минимальную нагрузку на память и т. Д. По мере того, как вы предлагаете асинхронную природу узла, этому способствует.
Вероятно, не тот ответ, который вы хотели бы услышать, но вам нужно будет обработать файл для гарантии заказа. В Linux простое решение для этого - просто использовать сортировку в файле журнала (что должно работать, если ваши метки времени находятся в формате ISO и находятся в начале каждой строки):
$ sort your-bunyan-logfile
Теперь вы можете сортировать живой журнал. Технически не сложно, но я ничего не знаю о том, что делает это из коробки. Вам нужно написать что-то, что хранит несколько строк в памяти, по крайней мере, на короткое время (для облегчения этих поздних журналов), а затем отображает их после небольшой задержки. Вам нужно будет принять некоторые решения о максимальных линиях и их продолжительности...
Все это ощущается сверх того, во что вы хотите попасть, но если вы создали что-то, что сделало это (и назвало это livesort
), если бы он читал из stdin и записывал в stdout, то вы могли бы сделать что-то вроде этого, чтобы отслеживать живой файл журнала:
$ tail -f your-bunyan-logfile | livesort
Удачи! -Darrin