web-dev-qa-db-fra.com

La taille du fichier journal de Ruby on Rails est trop grande

Je suis tombé par hasard sur le fait que mon fichier journal Rails3.1 est très volumineux, environ 21 Mo. Est-ce une taille normale? Que souhaite le fichier journal dans l'environnement de production? Par ailleurs, puis-je me débarrasser du journal? Merci

27
Jason

vous pouvez simplement supprimer le fichier!
Rails créera un nouveau journal s'il n'en existe pas.
Évidemment, sauvegardez/sauvegardez le fichier si c'est important, mais ce n'est généralement pas le cas.
Vous pouvez également compresser le fichier sauvegardé (puis supprimer la source) si vous souhaitez le conserver sur le même lecteur tout en économisant de l’espace.

Pour faire pivoter automatiquement les fichiers journaux (la meilleure solution à long terme), utilisez la rotation des journaux comme décrit ici: 

Rotation du journal de production de Ruby on Rails

alors vous pouvez le définir et l'oublier!

Pour réellement changer ce qui est enregistré, voir:

http://dennisreimann.de/blog/silencing-the-Rails-log-on-a-per-action-basis/

23
Michael Durrant

Le dossier log de votre application Rails contient trois fichiers journaux correspondant à chacun des environnements standard. Les fichiers journaux peuvent devenir très volumineux avec le temps. Un rake task est fourni pour permettre d'effacer facilement les fichiers journaux.

rake log:clear
# Truncates all *.log files in log/ to zero bytes 
# Specify which logs with LOGS=test,development,production
66
Raj Adroit

Selon la documentation , si vous souhaitez limiter la taille du dossier de journalisation, mettez ceci dans votre fichier 'development.rb':

config.logger = ActiveSupport::Logger.new(config.paths['log'].first, 1, 50 * 1024 * 1024)

Avec cela, vos fichiers journaux ne deviendront jamais plus grands que 50 Mo. Vous pouvez modifier la taille selon vos préférences. Le «1» dans le deuxième paramètre signifie que 1 fichier de journal historique sera conservé. Vous aurez donc jusqu’à 100 Mo de journaux - le journal actuel et le bloc précédent de 50 Mo.

7
Fellow Stranger

Vous voudrez peut-être utiliser logrotate. Regardez la réponse à cette question: Rotation du journal de production de Ruby on Rails .

5
htanata

J'efface automatiquement les journaux en développement sur chaque serveur. Commencez par config/initializers/clear_development_log.rb:

if Rails.env.development?
  `rake log:clear`
end
4
Drew Stephens

Oui, vous pouvez utiliser une syntaxe comme ceci:

config.logger = ActiveSupport::Logger.new(config.log_file, num_of_file_to_keep, num_of_MB*1024*1024)

Exemple:

config.logger = ActiveSupport::Logger.new(config.log_file, 2, 20*1024*1024)

En utilisant non seulement le journal Rails, vous pouvez utiliser le fichier journal de tous les services exécutés avec Rails, tels que: rpush log, ...

1
ThienSuBS

Un juste compromis, dans un initialiseur:

Rake::Task['log:clear'].invoke if Rails.env.development? || Rails.env.test?
0
Dorian

config.logger = ActiveSupport::Logger.new(nil) fait le tour et désactive complètement la journalisation dans un fichier (la sortie de la console est préservée).

0
Artur Beljajev