Я создал сервис с responsephp, который работает и делает некоторые вещи. Он запускается как демон, поэтому весь вывод должен быть зарегистрирован в файле.
Этот файл журнала должен быть назван ‘foo-log-file — $ (date «+ F»)’. Я хочу иметь один файл журнала для каждого дня.
Как уже упоминалось, скрипт работает как сервис, без остановки. Поэтому начальный вызов сценария выполняется только один раз.
php my_script.php >> /var/log/bar/log-file--$(date "+%F") 2>&1
Таким образом, все, что выводится на консоль из этого скрипта, сохраняется в файл, но файл создается только со строкой даты, когда он был вызван, и не обновляется с новой датой.
Можно ли решить эту проблему без записи логики в php-скрипт? Могу ли я справиться с этим требованием с Bash?
FYI
Ответ @fedorqui был хорошим подходом, я решил его с помощью cronjob, который копирует файл в другой и очищает остальные.
Вы не можете использовать перемещение, потому что сервис работает, он открыт все время, и вы получаете сообщение об ошибке:
cannot move 'foo.log' to 'bar.log': Text file busy
Поэтому я проверяю это и очищаю старый с:
cp foo.log foo.log.$(date +"%F");
cp /dev/null file.log;
Других решений пока нет …