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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top