Les pignons ont tendance à être assez prolixes dans le journal (dev) par défaut sous Rails 3.1 (RC1):
Started GET "/assets/application.css" for 127.0.0.1 at 2011-06-10 17:30:45 -0400
Compiled app/assets/stylesheets/application.css.scss (5ms) (pid 6303)
Started GET "/assets/application.js" for 127.0.0.1 at 2011-06-10 17:30:45 -0400
Compiled app/assets/stylesheets/default.css.scss (15ms) (pid 6303)
...
Started GET "/assets/default/header_bg.gif" for 127.0.0.1 at 2011-06-10 17:30:45 -0400
Served asset /default/header_logo.gif - 304 Not Modified (7ms) (pid 6303)
Served asset /default/header_bg.gif - 304 Not Modified (0ms) (pid 6246)
Served asset /default/footer_bg.gif - 304 Not Modified (49ms) (pid 6236)
...
J'aimerais soit réduire le niveau de verbosité, soit le désactiver complètement. Je suppose qu'il existe un moyen propre de désactiver ou de réduire la verbosité de la journalisation en ajoutant une ligne de configuration dans environment.rb
ou development.rb
similaire à config.active_record.logger = nil
qui réduit au silence les instructions ActiveRecord SQL.
Placez le code suivant dans config/initializers/quiet_assets.rb
if Rails.env.development?
Rails.application.assets.try(:logger=, Logger.new('/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'] =~ %r{^/assets/}
call_without_quiet_assets(env)
ensure
Rails.logger.level = previous_level
end
alias_method_chain :call, :quiet_assets
end
end
Mise à jour: fonctionne aussi pour Rails 3.2 aussi (une tentative précédente corrige before_dispatch
, nous allons maintenant utiliser le rack racine call
)
Mise à jour: une solution middleware Rack appropriée (au lieu de alias_method_chain
fragile) de @macournoyer https://github.com/Rails/rails/issues/2639#issuecomment-6591735
Jetez un oeil à https://github.com/evrone/quiet_assets et incluez-le dans votre Gemfile
Pour les paresseux: gem 'quiet_assets', group: :development
Pour Rails 3.2, ajoutez config.assets.logger = false
à votre fichier de configuration de l'environnement de développement, qui se trouve généralement à l'adresse config/environments/development.rb
. Voir # 4512
Deux choses suffisent:
1. config.assets.debug = false
dans config/enviroments/development.rb
2. rake assets:precompile
. Voir le commentaire de @oma ci-dessous; cela n'est pas nécessaire
C'est tout!
Finalement, ce sera config.assets.logger = nil
mais cette partie est actuellement modifiée sur le maître (pas encore terminée)
Beaucoup de gens sont confus quant à l'utilisation de config.assets.logger = false
. Voici ce qu'il fait et ce qu'il ne fait pas.
Selon le documentation source :
Définir
config.assets.logger
sur false désactivera la journalisation des actifs servis.
Cependant, ce n'est probablement pas ce que vous pensez. Il désactive uniquement les journaux de service 'pignon' , pas les journaux Rails _ ActionPack. Le responsable Rails explique cela clairement ici: https://github.com/Rails/rails/issues/4569#issuecomment-35945
En prenant exemple sur le lien, les journaux comme celui-ci sont désactivés:
Actif servi /jquery.isotope.js - 304 non modifié (0ms)
Mais les journaux comme celui-ci ne sont pas
Ouverture de GET "/assets/jquery.isotope.js?body=1" pour 127.0.0.1 le 2012-01-20 23:16:46 -0500
Je sais que c'est une solution laide et temporaire, mais j'utilise ceci:
tail -f log/development.log | grep -vE 'actif'
config.assets.quiet = true
C'est la dernière façon de faire.
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
c'est le même code ajouté @choonkeat. Je viens d'inclure de travailler sous les fenêtres aussi.
dans development.rb, dans config/environment, vous trouverez la ligne config.assets.debug = true
. Basculez-le sur false
et la plus grande partie de la charge d'actifs sera supprimée. Sur mon système, seules les deux demandes pour application.css et .js sont conservées.
Dans config/environnements/development.rb, veuillez ajouter:
config.assets.debug = false
config.assets.logger = false
Cela aidera à résoudre votre problème.
Lograge pour le gagnant- Il élimine les défauts par défaut de l'enregistreur de Rails (par exemple, la journalisation des actifs, la restitution du rendu partiel) , et est personnalisable si vous souhaitez ajouter/supprimer des éléments spécifiques.
La solution de lien mentionnée ci-dessous aide à:
https://github.com/evrone/quiet_assets
Aussi comme ci-dessous cela fonctionne bien pour moi
3.1 (seulement) (3.2 sauts avant_dipatch)
app\config\initializers\quiet_assets.rb
Rails.application.assets.logger = Logger.new('/dev/null')
Rails::Rack::Logger.class_eval do
def before_dispatch_with_quiet_assets(env)
before_dispatch_without_quiet_assets(env) unless env['PATH_INFO'].index("/assets/") == 0
end
alias_method_chain :before_dispatch, :quiet_assets
end
3.2 Rails - Rack root tap approach
app\config\initializers\quiet_assets.rb
Rails.application.assets.logger = Logger.new('/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