2012-03-06 2 views
8

Для Rails 3.1 (будет очень скоро 3,2), у меня есть исключительно подробные журналы, которые содержат много дополнительной информации о работниках, извергающейся в них.Вращение журнала в режиме Rails DEVELOPMENT?

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

Как вы поворачиваете development.log на каждые 100.megabytes или около того? ИЛИ ЧТО Я ХОЧУ ПРЕДОТВРАТИТЬ - фактически усечь голову файла так, чтобы в журнале сохранялись только самые последние элементы, до 100 МБ самых последних записей.

Я немного поиграл с этим, и я думаю больше и больше, чем ничего подобного в настоящее время, и что, возможно, я должен реализовать что-то, что будет использовать рубин File.truncate каким-то образом, однако я не уверен в эффективности это еще на хвосте файла.

+0

На каком сервере вы работаете? – Roger

+0

Запуск на Mac OS X для 'development'. Некоторые из них находятся в группе linux. Если я могу использовать неспецифический метод, который был бы лучшим, или я могу что-то сделать с 'case CONFIG ['host_os']' если необходимо. – ylluminate

+1

http://stackoverflow.com/questions/1036821/how-to-delete-rails-log-file-after-certain-size – Kuba

ответ

10

Вы действительно можете сказать класс рубин Logger, чтобы повернуть файлы в конструкторе:

http://corelib.rubyonrails.org/classes/Logger.html#M000163

Пример:

Logger.new(name, shift_age = 7, shift_size = 1048576) 

В одном из моих enrivornment файлов у меня есть следующие строки:

config.logger = Logger.new("#{RAILS_ROOT}/log/#{ENV['RAILS_ENV']}.log", 10, 1048576) 

Это сохраняет последние 10 логов, которые вращаются каждые 1 МБ.

+2

Это хорошо работает, однако в 3.2 класс Logger устарел в пользу ActiveSupport :: BufferedLogger, который, по-видимому, не поддерживает ротацию. Срыв! –

+0

@CaffeineComa вы можете поддержать свой вывод? Я использую Rails 3.2.2, и это работает очень хорошо, по крайней мере, в режиме разработки, это область этого вопроса. –

1

На OSX я хотел бы использовать Newsyslog

/etc/newsyslog.conf

На ОС Linux: Logrotate

logrotate

+0

Любые мысли об использовании 'tail -c $ [100 * 1024 * 1024] development.log'? – ylluminate

+0

хорошо tbh не очень, его довольно массивный. Я обычно (для отладки/devlopment) очищаю консоль (cmd-k), а затем запускаю свой код, чтобы узнать, что произошло. Наблюдая за трассой на 100 МБ, нет благодарности :) И это также зависит от того, работают ли другие люди на вашем dev env. С тех пор вам нужно разбить беспорядок разных IP-адресов. – Roger

+0

Хахаха, да, это все еще немного. Как только у нас не будет такого сумасшедшего шланга для шланга, для некоторых данных я обрезаю его до более чем 10 МБ. – ylluminate

Смежные вопросы