Размер файла журнала Ruby on rails слишком велик - PullRequest
28 голосов
/ 16 октября 2011

Я споткнулся, узнав, что мой файл журнала rails3.1 очень большой, около 21 МБ. Это нормально с точки зрения размера? Что файл журнала хотел бы в производственной среде? Кроме того, я могу избавиться от журнала? Спасибо

Ответы [ 8 ]

69 голосов
/ 17 марта 2013

Папка log вашего приложения Rails содержит три файла журнала, соответствующих каждой из стандартных сред.Файлы журнала могут со временем стать очень большими.rake task обеспечивает легкую очистку файлов журнала.

rake log:clear
# Truncates all *.log files in log/ to zero bytes 
# Specify which logs with LOGS=test,development,production
24 голосов
/ 16 октября 2011

Вы можете просто удалить файл!
Rails создаст новый журнал, если он не существует.
Очевидно, сохраните / сделайте резервную копию файла, если это важно, но обычно это не так.
Вы также можете сжать файл резервной копии (и затем удалить исходный файл), если хотите сохранить его на том же диске, но при этом сэкономить место.

Чтобы автоматически вращать файлы журналов (лучшее долгосрочное решение), используйте log rotate, как описано здесь:

Вращение журнала производства Ruby on Rails

тогда вы можете установить его и забыть!

Чтобы на самом деле изменить то, что регистрируется, смотрите:

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

8 голосов
/ 28 мая 2016

В соответствии с документацией , если вы хотите ограничить размер папки журнала, поместите ее в файл 'development.rb':

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

С этим,Ваши файлы журнала никогда не будут больше, чем 50 МБ.Вы можете изменить размер по своему усмотрению.«1» во втором параметре означает, что будет сохранен 1 исторический файл журнала, поэтому у вас будет до 100 МБ журналов - текущий журнал и предыдущий фрагмент 50 МБ.

5 голосов
/ 16 октября 2011

Вы можете использовать logrotate.Посмотрите на ответ на этот вопрос: Вращение журнала производства Ruby on Rails .

4 голосов
/ 21 декабря 2016

Я автоматически очищаю логи в разработке на каждом сервере, начиная с config/initializers/clear_development_log.rb:

if Rails.env.development?
  `rake log:clear`
end
1 голос
/ 03 августа 2016

Да, вы можете использовать такой синтаксис:

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

Пример:

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

Это не только использование для журнала Rails, вы можете использовать файл журнала любых сервисов, запускаемых с rails, таких как: rpush log, ...

0 голосов
/ 31 марта 2017

Честный компромисс, в инициализаторе:

Rake::Task['log:clear'].invoke if Rails.env.development? || Rails.env.test?
0 голосов
/ 27 августа 2016

config.logger = ActiveSupport::Logger.new(nil) делает трюк и полностью отключает ведение журнала в файл (консольный вывод сохраняется).

...