2014-06-24 1 views
0

J'ai plusieurs enregistreurs dans mon application rails qui sont initialisés comme celui-ci dans la production:rails sur mesure enregistreurs non rincée lors de l'arrêt passager

log_file = File.open("#{Rails.root}/log/my_log_#{Rails.env}.log", 'a') 
log_file.sync = !Rails.env.production? 

LOG = Logger.new(log_file) 

J'utilise ci-dessus comme suit:

LOG << "my message\n" 

Notez que log_file.sync est faux dans la production, car je ne veux pas écrire sur le disque sur chaque message enregistré. Le problème que je remarque est que lorsque j'arrête mon serveur apache rails (sudo /etc/init.d/httpd stop), mon LOG n'est pas vidé. En conséquence, je perds des messages. Est-ce que ce comportement est attendu?

La partie impaire est que j'ai dépanné en utilisant la console rails (production) pour écrire un tas de messages de journal à LOG. Lorsque j'ai fermé la console des rails, mon LOG a été vidé comme prévu. Donc, cela me fait croire qu'il y a quelque chose qui ne va pas avec la façon dont je suis en train de fermer l'instance de mes rails dans Passenger.

Alors comment se fait-il que LOG se vide correctement dans la console des rails mais pas dans le serveur passager actuel? Qu'est-ce que je rate? Je cours Rails 3.2.8 et en utilisant Apache w/Passenger 3.0.17.

Merci!

Répondre

0

La mise à niveau vers Passenger 4.0.45 a résolu le problème.

Questions connexes