Кое-что о структуре журнала Erlang
Мы постарались использовать лагер в качестве каркаса логов. Но мы сталкиваемся с некоторой проблемой.
lager может потерять некоторую дату, мы видели исходный код lager, я думаю, причина в том, что gen_event notify является асинхронным вызовом, он не гарантирует получение сообщения.
Производительность лагера недостаточно хороша. Я просто предполагаю, что это из-за того, что бэкэнд файла лагера написан erlang. Так что это не очень хорошая производительность.
Итак, я думаю, что каркас журнала, написанный на C и заключенный в капсулу Erlang, может быть хорошим выбором.
Знаете ли вы какие-либо рамки Erlang отвечают требованиям?
1 ответ
lager создает событие с именем 'lager_event' в приложении.
Для каждого бэкэнда есть только один процесс gen_event для его обработки. Поэтому, если слишком много процессов генерируют сообщения одновременно, журнал, конечно, будет потерян в одно конкретное время. Это не связано с тем, какой язык вы используете.
Sugguest: 1. контролировать количество журналов. 2. избавиться от системы событий erlang и создать подсистему заданий (задач) (многопроцессных) для обработки журнала.