Obecnie aktualizujemy z Ubuntu 12.04 LTS do 14.04 LTS na naszych serwerach aplikacji ruby on rails i zauważyliśmy, że pliki dziennika już się nie obracają.
Na obu komputerach mamy plik /var/app-name/config/logrotate
należący do naszego użytkownika unix, deployer
który zawiera prawidłowy plik logrotate w następujący sposób:
/var/app-name/log/*.log {
daily
rotate 365
delaycompress
compress
dateext
dateformat -%Y%m%d
missingok
copytruncate
}
To jest następnie symlinkowane do /etc/logrotate.d/
katalogu jakoapp-name
Na naszym serwerze Ubuntu 12.04 mamy logrotate 3.7.8, który działa dobrze. Przechodzi do var/app-name/log/
katalogu i obraca wszystkie pliki dziennika
Ale na serwerze Ubuntu 14.04 mamy logrotate 3.8.7, która nie obraca plików logów dla naszej aplikacji.
Kiedy debuguję to za pośrednictwem sudo logrotate -d -f /etc/logrotate/.conf
, otrzymuję następujące dane wyjściowe:
Ignoring /etc/logrotate.d/app-name because the file owner is wrong (should be root).
Ścigając to w kodzie, wydaje się, że ta zmiana została dodana do strumienia wydania 3.8.x: https://github.com/demands/logrotate/commit/b8ce386a969c60e5c8ee78023c24a1ba0aab1526
Jeśli zmienię własność dowiązane do pliku /var/app-name/config/logrotate
, aby root
następnie zacznie ponownie działać. Ale biorąc pod uwagę, że ten plik jest częścią mojej aplikacji i został utworzony przez środowisko wdrażania capistrano, którego używamy w tym stanie, wolałbym nie zmieniać jego własności, gdy działało dobrze.
Więc czy pliki konfiguracyjne z dowiązaniami symbolicznymi są polecane / obsługiwane przez logrotate?
A jeśli tak, to czy odmowę użycia mojego pliku (będącego własnością deployer
), który jest dowiązany do /etc/logrotate.d
katalogu, należy uznać za błąd?
Czy istnieje inne zalecane podejście do rotacji dzienników specyficznych dla aplikacji?
(pytany także o Unix StackExchange )