2014-02-12 2 views
1

Я добавил запись bunyan в различные подсистемы моего приложения. Но когда я вижу файл журнала, я обнаружил, что журнал не упорядочен по метке времени. Я предполагаю, что это ожидается из-за асинхронного характера nodejs.node.js последовательный вход в систему bunyan

Я хотел знать, есть ли способ изменить это, чтобы журналы отображались последовательно (в хронологическом порядке)?

ответ

0

Гарантия порядка сортировки в журнале времени выполнения сложна, если вы также ищете производительность подкачки, минимальные накладные расходы на память и т. Д. Как вы полагаете, асинхронный характер узла способствует этому.

Возможно, это не тот ответ, который вы хотели бы услышать, но вам нужно будет обработать файл, чтобы гарантировать заказ. В Linux простое решение для этого является просто использовать сортировку по лог-файл (который должен работать, если ваши временные метки в формате ISO и находятся на передней части каждой строки):

$ sort your-bunyan-logfile 

Теперь вы можете быть глядя на сортировать живой журнал. Не технически сложно, но я не знаю ничего, что делает это из коробки. Вам нужно будет написать что-то, что хранит несколько строк в памяти, по крайней мере, на короткое время (для облегчения этих поздних журналов), а затем отображает их после короткой задержки. Вам нужно будет принять некоторые решения о максимальных строках, которые нужно соблюдать и как долго их хранить ...

Это все чувствует себя выше и выше того, что вы хотите получить, но если вы построили что-то, что сделало это (и назвал его livesort), было чтение из стандартного ввода и записи в стандартный вывод, то вы могли бы сделать что-то вроде этого, чтобы следить за живой логфайл:

$ tail -f your-bunyan-logfile | livesort 

удачи! -Даррин

Смежные вопросы