möglich logrotate Schienen App mit nginx Passagiere ohne Neustart?
-
25-09-2019 - |
Frage
Es ist möglich, logrotate zu tun, ohne einen Neustart nginx (nur USR1 Signal sendet es an nginx wird die Arbeit tun). Ich frage mich, ist es möglich, für meine Rails-Anwendung (nginx Passagier). Es ist nicht wert, meine Schienen neu zu starten apps nur logrotate zu tun.
Lösung
Wenn Sie Schienen Anwendungsprotokoll Rotation sprechen, können Sie das tun, indem
config.logger = Logger.new(config.log_path, 10, 1024**2)
in Ihrer Umgebung Datei. Das zweite Argument ist die Anzahl der LOG-Dateien Sie behalten möchten, und 3. die Größe in Bytes ist, dass die Dateien erreichen dürfen, bevor sie gedreht werde. Diese Konfiguration bedeutet 10 Dateien von 1 MB. vielleicht nicht ganz so logrotate als konfigurierbar sein (keine Unterstützung für die Komprimierung etc.), aber es können Sie behalten alle Ihre Log-Dateien in Ihrer App. Dies funktioniert in der Regel für mich.
Auch fanden diese wenn Mangel loggt bleiben Drehung über nginx.
Andere Tipps
logrotate Konfiguration ist ziemlich einfach, diese nach unten zu bekommen
/path/to/rails_apps/*/shared/log/*.log {
daily
missingok
rotate 30
compress
delaycompress
copytruncate
}
die copytruncate
grundsätzlich kopiert den Inhalt auf neue Datei und Verkürzungen die alte Datei. Dadurch entfällt die Notwendigkeit für einen Neustart.