Не давно я запустил в продакшене приложение для сбора статистики прочтений авторских материалов и расчёта гонорара. Собственно счётчик показов был стандартный JavaScript + img. На стороне сервера данные фиксируются в лог-файле и раз в час производится обработка логов.
Исходя из особенностей обработки статистики и удобства работы с логами к ним предъявлялись следующие требования:
- логи должны ротироватся ровно в полночь
- в имени лог-файла должна быть соответствующая дата
- в лог можно писать одновременно из нескольких процессов
Первые два пункта без проблем решаются стандартными средствами питоновского модуля
logging и хендлера
TimedRotatingFileHandler. А вот для того, что бы реализовать третий пункт треубется специальный, отдельно запущенный сервер логирования (есть конечно варианты реализации с использованием модуля
multiprocessing, но мне этот вариант не нравится).