5

Wie kann ich die ausführliche Aufzeichnung aktiver Protokolle in der Produktion deaktivieren? (Wie jede SQL-Anweisung wird protokolliert) Meine Protokolle füllen sich sehr schnell, weil ich im Hintergrund viele Abfragen ausgeführt habe. Dies ist in Ordnung auf meinem Entwicklungsserver, aber ich brauche diese eingeloggte Produktion nicht.Aktiviere Aufzeichnungsprotokollierung in Produktion deaktivieren

+0

Nicht sagen, dass ich nicht mit Ihnen einverstanden bin, aber ich mag es, die SQL-Protokolle zu behalten und Probleme mit der Protokolldateigröße durch Rotation zu behandeln. Hast du dieses Setup? Wenn nicht, auf welchem ​​Betriebssystem sind Sie in prod? – steakchaser

+1

Mein Problem ist, ich benutze Papertrail auf Heroku und wenn ich nicht die Größe des Logs kontrolliere ich in wenigen Minuten die Datenübertragung auslaufen. Ich brauche das nur für diesen bestimmten Hintergrundjob nicht geloggt. Also, wenn es eine Möglichkeit gibt, es "vorübergehend" auszuschalten, könnte das auch funktionieren –

Antwort

9

vollständig ausschalten, um nur diese Datei zu Ihrer Umgebung hinzufügen (dh production.rb):

config.active_record.logger = nil 

Siehe AR guide (Abschnitt 3.6):

config.active_record.logger akzeptiert einen Logger konform an die Schnittstelle von Log4r oder die Standard-Ruby Logger-Klasse, die dann an alle neuen Datenbankverbindungen weitergegeben wird. Sie können diese Protokollfunktion abrufen, indem Sie entweder eine Active Record-Modellklasse oder eine Active Record-Modellinstanz aufrufen. Auf Null setzen, um die Protokollierung zu deaktivieren.

Es gibt mehr Optionen (wie selektiv Ein/Ausschalten) in anderen Beiträgen dokumentiert. Siehe Disable Rails SQL logging in console als Ausgangspunkt.

+2

Danke. Am Ende habe ich ActiveRecord :: Base.logger = nil in den Job eingefügt, den ich nicht protokollieren wollte –