379 Stimmen

Wie kann ich das Protokollieren von Asset-Pipeline (Sprockets)-Nachrichten in Ruby on Rails 3.1 deaktivieren?

Sprockets tendiert dazu, standardmäßig im (dev) Log von Ruby on Rails 3.1 (RC1) recht ausführlich zu sein:

Gestartet GET "/assets/application.css" für 127.0.0.1 um 2011-06-10 17:30:45 -0400
Kompilierte app/assets/stylesheets/application.css.scss  (5ms)  (pid 6303)

Gestartet GET "/assets/application.js" für 127.0.0.1 um 2011-06-10 17:30:45 -0400
Kompilierte app/assets/stylesheets/default.css.scss  (15ms)  (pid 6303)

...
Gestartet GET "/assets/default/header_bg.gif" für 127.0.0.1 um 2011-06-10 17:30:45 -0400
Diente asset /default/header_logo.gif - 304 Not Modified  (7ms)  (pid 6303)
Diente asset /default/header_bg.gif - 304 Not Modified  (0ms)  (pid 6246)
Diente asset /default/footer_bg.gif - 304 Not Modified  (49ms)  (pid 6236)
...

Ich würde entweder den Grad der Ausführlichkeit reduzieren oder sie ganz deaktivieren.

Ich gehe davon aus, dass es einen sauberen Weg gibt, um das Logging durch das Hinzufügen einer Konfigurationszeile in environment.rb oder development.rb ähnlich wie config.active_record.logger = nil zu deaktivieren oder die Ausführlichkeit zu reduzieren.

0 Stimmen

Jemand hat einen Fehler gemeldet: #2639. Noch "offen" am 2.9.

14 Stimmen

Die akzeptierte Antwort auf diese Frage sollte geändert oder aktualisiert werden. In Rails 3.2 können Sie einfach config.assets.debug = false in Ihrer development.rb einfügen.

7 Stimmen

@StewartJohnson - config.assets.debug = false wird Assets in eine einzelne Datei verknüpfen - nicht das, was die meisten Leute in der Entwicklung wollen

12voto

Sucrenoir Punkte 2963

Ich weiß, dass es eine hässliche und temporäre Lösung ist, aber ich benutze das hier:

tail -f log/development.log | grep -vE 'asset'

12voto

lulalala Punkte 16706

Viele Leute sind verwirrt über die Verwendung von config.assets.logger = false. Hier ist, was es macht und was es nicht macht.

Entsprechend der Quellendokumentation:

Das Festlegen von config.assets.logger auf false schaltet das Protokollieren der ausgelieferten Assets aus.

Das ist jedoch wahrscheinlich nicht das, was du denkst. Es deaktiviert nur die Protokolle des Sprocket 'serving', nicht die Ruby on Rails ActionPack-Anforderungsprotokolle. Der Ruby on Rails Betreuer erklärt das hier deutlich: https://github.com/rails/rails/issues/4569#issuecomment-3594500


Anhand des Links sind Protokolle wie dieses deaktiviert:

Ausgeliefertes Asset /jquery.isotope.js - 304 Not Modified (0ms)

Aber Protokolle wie dieses sind es nicht:

GET "/assets/jquery.isotope.js?body=1" gestartet für 127.0.0.1 um 2012-01-20 23:16:46 -0500

10voto

Adam Waite Punkte 19683
config.assets.quiet = true

Das ist der neueste Weg zu gehen.

8voto

TKAB Punkte 174

In der Datei development.rb in config/environments finden Sie die Zeile config.assets.debug = true.

Ändern Sie das auf false und der Großteil der Asset-Ladungsausgabe wird verschwinden. Auf meinem System bleiben nur die beiden Anfragen für application.css und .js übrig.

7voto

Celso Dantas Punkte 1131

Verwendung:

Rails.application.assets.logger = Logger.new(RUBY_PLATFORM =~ /(win|w)32$/ ? "NUL" : "/dev/null")
Rails::Rack::Logger.class_eval do
  def call_with_quiet_assets(env)
    previous_level = Rails.logger.level
    Rails.logger.level = Logger::ERROR if env['PATH_INFO'].index("/assets/") == 0
    call_without_quiet_assets(env).tap do
      Rails.logger.level = previous_level
    end
  end
  alias_method_chain :call, :quiet_assets
end

Es handelt sich um den gleichen Code CHOONKEAT hinzugefügt hat. Ich habe ihn nur hinzugefügt, um auch unter Windows zu funktionieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X