Как стать автором
Обновить

log4php или что-то другое?

Время на прочтение1 мин
Количество просмотров1.6K
Вот столкнулся с тем что нужно из многих потоков приложения нужно писать в логи в один и тот же файл (нет в базу не подходит)

Рассмотрев варианты с flock — понял что время на то чтобы другой поток получил лок для записи в файл довольно таки велико — отказался.

Нашел проект log4php — это порт на пхп от проекта log4j


Дофиксили его — убрали баги всякие — поставили на продакшн. И оказалось что при большой нагрузке (около 7-10к запорсов в секунды) log4php не выполняет своей многопоточной записи в файл (то пропускает логи, то пишет их в перемешку из разных потоков). Мало того log4php при наполнении файла до лимита начинает делать аналогично logrotate (файл с логом переименовывается в log.txt.1 и лог обнуляется текущий.) — который тоже сбоит — он сносит старые файлы — обнуляет их за счет чтого, что в момент переименования (когда log.txt уже изменил имя) другие потоки пишут в log.txt а он потом опять переименовывается в log.txt.1 и log.txt.1 грубо говоря сносится — а там нужные логи :)

посему вопрос — что можно использовать для многопоточное ведения логов — быстрое и обязательно многопоточное.
Теги:
Хабы:
Всего голосов 1: ↑1 и ↓0+1
Комментарии20

Публикации