2011-07-16 5 views
0

J'ai une application Rails 3. Utilisation de la configuration de journalisation par défaut, quand je utiliser une commande commeRails: Reason journal config montre la différence entre la console et le fichier journal?

logger.warn "some message" 

message enregistreur apparaît dans la console et dans les journaux.

Maintenant, j'ajouter une ligne à production.rb

config.logger = Logger.new(Rails.root.join("log","biteme.log")) 

message enregistreur ne figure pas dans la console, seuls les journaux. Puis-je changer à ceci:

config.logger = Logger.new(config.paths.log.first) 

Et maintenant, un message apparaît dans la console et dans les journaux. Il y a une certaine connaissance ici que je suis manquant, parce que cela n'a aucun sens pourquoi la première config omet le message de log allant à la console. Des idées?

+0

premier objet est une chaîne, deuxième objet un chemin, je suppose que le comportement de l'enregistreur est conditionnel – apneadiving

Répondre

0

Rails utilise actuellement ActiveSupport::BufferedLogger au lieu de la classe standard Logger de ruby.

Essayez de faire votre enregistreur personnalisé de cette classe et voir si cela fonctionne:

config.logger = ActiveSupport::BufferedLogger.new(Rails.root.join("log","biteme.log")) 
+0

Je l'ai utilisé maintenant car il semble être le moyen standard de faire cela. – rtfminc

0

Enfin se sont attelés à la racine du problème. J'utilisais une gemme jasonp qui était en conflit avec les logs d'Heroku. Localement, pas de problème (bien sûr) mais en cours d'exécution depuis Heroku, les messages du journal ne sont pas apparus. Quand j'ai enlevé ce gem - les messages de journal apparaissent sur Heroku. Suis un heureux campeur maintenant.

Questions connexes