которая бы могла время от времени заниматься ротацией этого самого файла. У меня получился вот такой код. Собственно, по коду вот такой вопрос: верно ли, что в ф-ции rotate_file (в самом конце) для файла будет вызван drop и старый файл будет закрыт? Я просто не совсем понимаю, как работает drop для полей структур, если этот момент кто-нибудь осветит, буду искренне благодарен )
Если это просто log-файл. То лучше открывать и закрывать файл лога при каждом выводе строки. Современные ОС достаточно оптимизируют этот момент. Зато это позволит использовать стандартный logrotate, а также такие утилиты как tail.
Насколько я понимаю, это должно привести к принудительному flush на каждую запись, что может замедлить работу (может и не замедлить, конечно 🤪). Суть задумки как раз в том, чтобы через пайп писать в свою утилиту, которая будет заниматься ротацией и не будет терять логи (как это умеет делать logrotate, если не флашить каждую запись принудительно)
Там же будет open file description пересоздаваться
Нормальный способ ротации файла: * создать новую жёсткую ссылку foo_YYYY_MMM_DD_XXXX.log на foo.log, * удалить жёсткую ссылку foo.log Тогда, даже если сейчас foo.log пишется, все данные попадут куда надо. З.Ы.: При условии что ФС знает что такое жёсткие ссылки.
Если дескриптор последний на процесс/дерево процессов
Обсуждают сегодня