Modification du niveau des logs

Bonjour,

Je souhaite modifier le niveau des logs de mon appli et cela ne
fonctionne pas (niveau :info reste actif)

Mon fichier environment.rb :

Force all environments to use the same logger level

(by default production uses :info, the others :debug)

config.log_level = :error

la version rails de mon appli : 2.0.2
la version ruby : 1.8.7 (2008-06-20 patchlevel 22)

Une idée ?

Cdt,

Jérémy.

Le 19 septembre 2008 09:25, Jérémy Dierx a écrit :

la version ruby : 1.8.7 (2008-06-20 patchlevel 22)

Une idée ?

Au préalable, avec une appli Rails from scratch, avec un
contrôleur du genre :

class HelloController < ApplicationController
def index
logger.fatal “[Fatal] Log”
logger.error “[Erreur] Log”
logger.warn “[Warn] Log”
logger.info “[Info] Log”
logger.debug “[Debug] Log”

render :text => 'hello Railsfrance'

end
end

tu joues sur le log level pour voir si ça marche bien.

Si ça marche, c’est que le pb est spécifique à ton appli.
Sinon, c’est qu’il est plus général.

(tu peux aussi vérifier le level du logger… en l’affichant
dans les logs bien sûr :slight_smile: )

-- Jean-François.


http://twitter.com/underflow_

Merci JF pour ta réponse.

from scratch, avec une appli en rails 2.1.1, tout fonctionne
parfaitement.

Par contre, avec une appli freezée en rails 2.0.2, cela ne fonctionne
pas. En affichant le log_level dans les logs, ce dernier semble bien
initialisé à “error” mais reste concrètement au niveau “info”.

J’ai trouvé la solution suivante (pour rails 2.0.2 donc) :

ajouter “ActiveRecord::Base.logger.level = Logger::ERROR” dans
environment.rb, juste après le block “Rails::Initializer.run”

Jérémy.

Le vendredi 19 septembre 2008 à 11:04 +0200, Jean-François Trân a
écrit :

Merci JF pour ton investigation et tes conseils,

Le vendredi 19 septembre 2008 à 16:16 +0200, Jean-François Trân a
écrit :

Ce n’est pas ce que j’observe. Mais ça m’a intrigué et j’ai essayé de

  • même si tous les frameworks (au sens rails du terme) ont par
    défaut le même logger, autant modifier au niveau général, soit
    RAILS_DEFAULT_LOGGER (accessible en Rails 2.1 via Rails.logger)

  • si tu n’as pas changé le logger par défaut, tu as une
    instance d’ActiveSupport::BufferedLogger donc il vaudrait mieux
    utiliser ActiveSupport::BufferedLogger::ERROR même si les
    constantes sont les mêmes que Logger, mais c’est plus cohérent.

  • la meilleure solution, c’est de backporter le bugfix de script/server
    sinon finalement ton config.log_level = :error ne servirait à rien.

je backport !

– Jean-François.

PS. L’erreur ne se produit pas avec script/console, ç'aurait dû
être une indication intéressante…

J.

Le 19 septembre 2008 12:32, Jérémy Dierx a écrit :

Merci JF pour ta réponse.

from scratch, avec une appli en rails 2.1.1, tout fonctionne parfaitement.

Par contre, avec une appli freezée en rails 2.0.2, cela ne fonctionne pas.
En affichant le log_level dans les logs, ce dernier semble bien initialisé à
“error” mais reste concrètement au niveau “info”.

Ce n’est pas ce que j’observe. Mais ça m’a intrigué et j’ai essayé de
reproduire l’erreur et effectivement j’ai l’erreur. Après investigation,
çase reproduit avec Rails 2.0.2 et Mongrel (mais via script/server et
non mongrel_rails start ; ça marche avec WEBrick et Thin par exemple).
Effectivement le bug est au niveau de lib/command/servers/mongrel.rb

à cause de cette ligne :

Rails::Initializer.run(:initialize_logger)

nzkoz l’a corrigé dans le commit :

ticket associé : http://dev.rubyonrails.org/ticket/8665

J’ai trouvé la solution suivante (pour rails 2.0.2 donc) :

ajouter “ActiveRecord::Base.logger.level = Logger::ERROR” dans
environment.rb, juste après le block “Rails::Initializer.run”

Quelques remarques :

  • même si tous les frameworks (au sens rails du terme) ont par
    défaut le même logger, autant modifier au niveau général, soit
    RAILS_DEFAULT_LOGGER (accessible en Rails 2.1 via Rails.logger)

  • si tu n’as pas changé le logger par défaut, tu as une
    instance d’ActiveSupport::BufferedLogger donc il vaudrait mieux
    utiliser ActiveSupport::BufferedLogger::ERROR même si les
    constantes sont les mêmes que Logger, mais c’est plus cohérent.

  • la meilleure solution, c’est de backporter le bugfix de script/server
    sinon finalement ton config.log_level = :error ne servirait à rien.

    – Jean-François.

PS. L’erreur ne se produit pas avec script/console, ç’aurait dû
être une indication intéressante…


http://twitter.com/underflow_