Was ist der beste Weg, um die Protokollrotation in einer Ruby on Rails-Produktions-App zu aktivieren?
Wird logrotate auf dem Hosting-Server verwendet oder gibt es eine Reihe von Optionen, die beim Initialisieren von logger über die App verwendet werden können?
ruby-on-rails
logging
production-environment
cnicolaou
quelle
quelle
Antworten:
Option 1: Syslog + Logrotate
Sie können Schienen konfigurieren, um die Systemprotokolltools zu verwenden.
Ein Beispiel in config / environment / Production.rb .
Auf diese Weise melden Sie sich bei syslog an und können die Protokolle mit Standardwerkzeugen für die Protokollierung drehen.
Option 2: normale Rails-Protokolle + Logrotate
Eine andere Möglichkeit besteht darin, logrotate einfach so zu konfigurieren, dass die von Schienen hinterlassenen Protokolle erfasst werden. Unter Ubuntu und Debian wäre das zum Beispiel in einer Datei namens
/etc/logrotate.d/rails_example_com
.Gemäß den folgenden Vorschlägen wird die Verwendung in Rails empfohlen, um
copytruncate
zu vermeiden, dass die Rails-App neu gestartet werden muss.Bearbeiten: "Sharedscripts / Endscript" entfernt, da sie hier nicht verwendet werden und laut Kommentar Probleme verursachen. Und
create 640 root adm
gemäß dem vorgeschlagenen Kommentar entfernt.quelle
logrotate
Lösung verwenden, lohnt sich die Antwort von @ amit-saxena - schlägt die Verwendung voncopytruncate
über dercreate
Richtlinie vor.copytruncate
,create
hat dies keine Auswirkung, daher sollten Sie es wahrscheinlich aus Ihrem Beispiel entfernensu your_rails_user your_rails_group
mit dem Eigentümer und der Gruppe Ihrer Protokolldateien hinzufügen (dh die des Rails / Passenger-Prozesses), oder (neuere Versionen von?) Logrotate beschweren sich möglicherweise über Berechtigungen.Wenn Sie logrotate verwenden, können Sie eine der unten gezeigten Optionen auswählen, indem Sie eine conf-Datei im Verzeichnis /etc/logrotate.d/ ablegen.
Oder
Bitte beachten Sie, dass copytruncate eine Sicherungskopie des aktuellen Protokolls erstellt und dann die Protokolldatei für das weitere Schreiben löscht. Die Alternative besteht darin, create zu verwenden, um die Rotation durchzuführen, indem die aktuelle Datei umbenannt und anschließend eine neue Protokolldatei mit demselben Namen wie die alte Datei erstellt wird. Ich empfehle dringend , copytruncate zu verwenden, es sei denn, Sie wissen, dass Sie erstellen müssen. Der Grund dafür ist, dass Rails möglicherweise weiterhin auf die alte Protokolldatei verweist, obwohl sich ihr Name geändert hat, und dass möglicherweise ein Neustart erforderlich ist, um die neue Protokolldatei zu finden. copytruncate vermeidet dies, indem dieselbe Datei wie die aktive Datei beibehalten wird.
quelle
logrotate --force $CONFIG_FILE
indem Sie den Speicherort der Konfigurationsdatei angeben, um sie manuell auszuführen.Für Rails 5 musste ich Folgendes tun, um die Protokollgröße zu begrenzen und die Serverausgabe in der Konsole nicht zu ändern:
Wenn Sie laut Dokumentation die Größe des Protokollordners begrenzen möchten, fügen Sie diese in Ihre Umgebungsdatei ein ('development.rb' / 'Production.rb').
Dadurch werden Ihre Protokolldateien niemals größer als 50 MB. Sie können die Größe nach Ihren Wünschen ändern. Die '1' im zweiten Parameter bedeutet, dass 1 historische Protokolldatei beibehalten wird, sodass Sie bis zu 100 MB Protokolle haben - das aktuelle Protokoll und den vorherigen Block von 50 MB.
Quelle für diese Lösung .
quelle
config.paths['log'].first
würde ich setzenRails.root.join('log', "#{Rails.env}.log")
config.logger = ActiveSupport::Logger.new(config.log_file, 1, 20*1024*1024)
50.megabytes
ist dasselbe wie50 * 1024 * 1024
, aber viel einfacher zu verstehen. Weitere Informationen finden Sie unter ActiveSupport-Kernerweiterungen .Rails.application.config.paths['log'].first
Wenn Sie für Rails 5 eine tägliche Protokollrotation wünschen, benötigen Sie nur Folgendes:
Nach der Dokumentation können Sie verwenden
daily
,weekly
odermonthly
.quelle
Für jedes Protokoll: Rails-Protokoll, Rpush-Protokoll, ... Sie können Folgendes in Ihrer Konfigurationsdatei des Dienstes verwenden:
Dies bedeutet: Speichern Sie nur 1 vorherige Protokolldatei nach dem Teilen. Hauptprotokollgröße nie über 20 MB.
quelle
Aktivieren Sie diese Option, um Protokolle mithilfe von Rails Logglier an das Loggly zu senden. Schienenversion ist 4.1.0
quelle