Es ist möglich, logrotate zu machen, ohne nginx neu zu starten (senden Sie einfach das Signal USR1 an nginx, das wird den Job erledigen). Ich frage mich, ob es möglich ist, meine Schiene App (nginx Passagier). Es lohnt sich nicht, meine Rails-Apps neu zu starten, nur um ein Logrotate zu machen.möglich, Schienen App mit nginx Passagier logrotate ohne Neustart?
Antwort
Wenn Sie über Schienen Anwendungsprotokoll Rotation sprechen, können Sie tun, indem
config.logger = Logger.new(config.log_path, 10, 1024**2)
in Ihrer Umgebung Datei setzen. Das zweite Argument ist die Anzahl der .log-Dateien, die Sie behalten möchten, und die dritte ist die Größe in Bytes, die die Dateien erreichen dürfen, bevor sie gedreht werden. Diese Konfiguration bedeutet 10 Dateien von 1 Megabyte. Möglicherweise nicht ganz so konfigurierbar wie logrotate (keine Unterstützung für Komprimierung usw.), aber Sie können alle Ihre Protokolldateien in Ihrer App behalten. Das funktioniert normalerweise für mich.
Auch found this wenn Sie an Protokollierung der Rotation über Nginx bleiben möchten.
logrotate Konfiguration ist ziemlich einfach zu dieser
/path/to/rails_apps/*/shared/log/*.log {
daily
missingok
rotate 30
compress
delaycompress
copytruncate
}
die copytruncate
grundsätzlich kopiert den Inhalt auf neue Datei runter und kürzt die alte Datei. Dies macht den Neustart überflüssig.
Danke, ich merke nie, dass Schienen diese Option zu tun hat. – Chamnap
Ich persönlich habe festgestellt, dass die Rotation des Schienenlogs getroffen oder nicht getroffen wurde. manchmal bleibt der Rails-Logger bei der Aufzeichnung alter Dateien nach der Rotation hängen. – Addy
Seien Sie vorsichtig damit ... wenn Sie mehr als eine Instanz von Rails über Passenger (dh PassengerMinInstances) betreiben und Sie auch etwas wie PassengerMaxRequests in Ihrer Passagierkonfiguration eingestellt haben, dann beachten Sie, dass jeder neue Spawn eines Rails-Prozesses erstellt eine neue Datei. Wir hatten unser Setup wie folgt: "config.logger = Logger.new (config.log_path, 14, 200000000)" und es speicherte nur 1 Tag Logs, da 14 Instanzen den ganzen Tag lang auf der Basis der Last hoch und runter laufen würden , jedes Mal eine neue Datei erstellen. Sie haben kaum die maximale Größe von 200000000 erreicht. Gehen Sie mit Syslog. – Harmon