Гарантия порядка сортировки в журнале времени выполнения сложна, если вы также ищете производительность подкачки, минимальные накладные расходы на память и т. Д. Как вы полагаете, асинхронный характер узла способствует этому.
Возможно, это не тот ответ, который вы хотели бы услышать, но вам нужно будет обработать файл, чтобы гарантировать заказ. В Linux простое решение для этого является просто использовать сортировку по лог-файл (который должен работать, если ваши временные метки в формате ISO и находятся на передней части каждой строки):
$ sort your-bunyan-logfile
Теперь вы можете быть глядя на сортировать живой журнал. Не технически сложно, но я не знаю ничего, что делает это из коробки. Вам нужно будет написать что-то, что хранит несколько строк в памяти, по крайней мере, на короткое время (для облегчения этих поздних журналов), а затем отображает их после короткой задержки. Вам нужно будет принять некоторые решения о максимальных строках, которые нужно соблюдать и как долго их хранить ...
Это все чувствует себя выше и выше того, что вы хотите получить, но если вы построили что-то, что сделало это (и назвал его livesort
), было чтение из стандартного ввода и записи в стандартный вывод, то вы могли бы сделать что-то вроде этого, чтобы следить за живой логфайл:
$ tail -f your-bunyan-logfile | livesort
удачи! -Даррин