2009-08-17 6 views
6

Y a-t-il un moyen de dire à l'enregistrement actif de ne pas enregistrer les codes de couleur ansi lors de la journalisation?Comment puis-je dire à ActiveRecord de ne pas enregistrer de caractères de contrôle

Par exemple. Je ne veux pas ça dans mes journaux.

[4;36;1mSQL (0.1ms)[0m [0;1mSELECT count(*) AS count_all FROM `users` WHERE (`user`.id = 133) [0m 

Je veux plutôt ceci:

SQL (0.1ms) SELECT count(*) AS count_all FROM `users` WHERE (`user`.id = 133) 

Je ne cherche pas une solution qui consiste à nettoyer le gâchis après le fait.

Répondre

9

réponse pour Rails 3:

config.colorize_logging = false 

Voir http://guides.rubyonrails.org/3_0_release_notes.html

ActiveRecord :: Base .colorize_logging et config.active_record.colorize_logging sont déconseillés au profit de Rails :: LogSubscriber.colorize_logging ou config.colorize_logging

8

Ajoutez ceci à votre fichier environnement approprié (dans mon cas development.rb)

config.active_record.colorize_logging = false 
+0

cette réponse est valide pour rails <3 – bjelli

4

J'utilise cette méthode dans mes scripts JRuby. La partie qui désactive la coloration est

ActiveSupport::LogSubscriber.colorize_logging = false 

get_jar_path est une autre méthode qui renvoie le chemin correct dans le cas où le script est un fichier JAR

def activate_logger scriptname 
    # delete logs after a month 
    $log = Logger.new("#{get_jar_path}/logs/#{scriptname}_#{Time.now.strftime("%Y%m%d")}.txt", 'monthly') 
    # $log = Logger.new($stdout) 
    ActiveRecord::Base.logger = $log 
    ActiveRecord::Base.logger.level = Logger.const_get($debuglevel) 
    ActiveSupport::LogSubscriber.colorize_logging = false 
    $errors, $verwerkt = 0, 0 
    $log.info "start #{__FILE__}" 
end 
Questions connexes