Мы использовали системный-журнал-ng для входа наших журналов пост-ГРЭС. Вдобавок к нему мы выполняем logrotate каждые 5 минут который также gzips файлы. Недавно, мы отметили, что эти журналы пост-ГРЭС содержат много нулевых символов в начале файла. Мы позже поняли, что место, занятое нулевыми символами, равно предыдущему размеру файла.
Исследование (https://bugs.debian.org/cgi-bin/bugreport.cgi? bug=733856) на том, почему sparsing происходил, мы поняли, что проблема связана с системным-журналом-ng, не бывшим способным записать журналы с начала. Мы пытались писать постповорачивать сценарий, который уничтожит - ПОНУКАЮТ системный-журнал-ng. Мы попробовали это, но напрасно. Многие разобрались в этой проблеме путем установки бита o_append. Кто-либо знает, как установить бит o_append для системного-журнала-ng так, чтобы он не писал из последней сохраняемой головки записи и запускался с начала файла?
Предположим, вы говорите о /var/log/postgresql/postgresql--main.log: syslog - это не ваша точка контроля. Как указывает wurtel, эти журналы не поступают через syslog, а являются stdout / stderr процесса postgres
Вот почему стандартный logrotate для postgres должен быть copytruncate, т.е. скопировать файл, а затем усечь его до нулевых байтов. . После этого перенаправленный вывод снова начнет записывать с начала файла (по крайней мере, так происходит в стандартной готовой системе).
Как ни странно, если ваш logrotate не является copytruncate, то я ожидал бы, что после поворота вывод пойдет в файл .1. Не могли бы вы поделиться конфигурацией logrotate, которую вы используете? Я подозреваю, что где-то там есть зацепка.