Кое-что о структуре журнала Erlang

Мы постарались использовать лагер в качестве каркаса логов. Но мы сталкиваемся с некоторой проблемой.

  1. lager может потерять некоторую дату, мы видели исходный код lager, я думаю, причина в том, что gen_event notify является асинхронным вызовом, он не гарантирует получение сообщения.

  2. Производительность лагера недостаточно хороша. Я просто предполагаю, что это из-за того, что бэкэнд файла лагера написан erlang. Так что это не очень хорошая производительность.

Итак, я думаю, что каркас журнала, написанный на C и заключенный в капсулу Erlang, может быть хорошим выбором.

Знаете ли вы какие-либо рамки Erlang отвечают требованиям?

1 ответ

  1. lager создает событие с именем 'lager_event' в приложении.

  2. Для каждого бэкэнда есть только один процесс gen_event для его обработки. Поэтому, если слишком много процессов генерируют сообщения одновременно, журнал, конечно, будет потерян в одно конкретное время. Это не связано с тем, какой язык вы используете.

Sugguest: 1. контролировать количество журналов. 2. избавиться от системы событий erlang и создать подсистему заданий (задач) (многопроцессных) для обработки журнала.

Другие вопросы по тегам