Я использую logrotate
для управления своими журналами. Поскольку мне приходится управлять кучей лог-файлов. Моя конфигурация logrotate выглядит так
/log/typeA*.log
/log/typeB*.log
/log/typeC*.log{
daily
rotate 7
copytruncate
size 1M
compress
su root root
create 0644 root root
missingok
}
После завершения logrotation я вижу кучу нулевых символов в начале файла. Который выглядит как
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
Похоже на бесконечно длинную строку. Также размер файла выглядит одинаково. Существует решение, предложенное https://serverfault.com/a/510470 для использования сценария постротации, например
postrotate
sed -i -e 's/\o00//g' "$1"
endscript
Но использование этого скрипта изменит файл и изменит поток. Таким образом, журналы не будут перенаправлены в несуществующий файловый поток.
Я генерирую журналы, используя модуль ведения журнала python.