2010-10-15 4 views
9

Ich muss den Standard-Protokollpfad meiner Rail-Anwendung ändern, da mein Unternehmen die Software intern implementiert: Im Grunde läuft meine Rails-App an einem schreibgeschützten Speicherort, und ich brauche die Protokolldateien in einem Verzeichnis "dafür".Wie ändert man den Standardprotokollpfad von Rails 3.0?

Mit Rails 2.x haben wir etwas schwarze Magie in unser FCGI-Skript eingefügt, um dies zu erzwingen, wenn es auf Prod bereitgestellt wird. Gastgeber: Allerdings

class Rails::Configuration 
    def default_log_path 
    File.join(ENV['SOME_ENVIRONMENT_VAR'], "var/output/logs/rails.log") 
    end 
end 

, ist Konfiguration keine Klasse mehr in Rails 2.3 (es ist ein Modul), und es scheint mir es keine default_log_path mehr da auch beteiligt ist ...

Antwort

7

Sie müssen nur Ihren Logger definieren

config.logger = ActiveSupport::BufferedLogger.new(File.join(ENV['SOME_ENVIRONMENT_VAR'], "var/output/logs/rails.log")) 

Dieser Trick funktioniert auch mit Rails 2. Und Sie können nach Umgebung definieren, wo Sie Ihre Log-Datei wirklich haben wollen.

+2

Eigentlich Rails3 (zumindest) hat eine config.log_path, die ich verwendet und perfekt funktioniert. Aber ich hätte nicht ohne deine (eigentlich sehr vernünftige) Lösung gefunden :) – Romain

+0

wie du willst. Sie können Ihren Logger auch mit der Konfiguration config.logger ändern. Verwenden Sie Syslogger als Beispiel. Setzen Sie Ihre gefundene Antwort ein. Es ist besser. – shingara

+0

Gibt es tatsächlich eine kanonische Informationsquelle zu diesen Konfigurationseigenschaften? Ich habe bis jetzt noch keinen umfassenden gefunden ... – Romain

6

Die config.log_path Einstellung veraltet ist - jetzt ist die empfohlene Lösung:

config.paths.log = "/some/path/#{Rails.env}.log"

+1

Diese Syntax wird nicht korrekt angezeigt. Wenn Sie im config-Block eine 'config.paths ['logfile'] = '...' machen, scheint das richtig zu sein, aber LogTailer beschwert sich immer noch. – aceofspades

+2

Für mich funktionierte 'config.paths ['log']' wie von @aceofspades vorgeschlagen (unten, nicht 'logfile') gut. – iGEL

4

Ab Rails 3.2.3, sieht aus wie der Log-Pfad auch in Rails::Rack::LogTailer#initialize definiert ist, und das kommt von Rails: : Server # log_pfad.

Verwandte Themen