2012-03-06 15 views
8

Dla Rails 3.1 (wkrótce będzie to 3,2), mam wyjątkowo szczegółowe dzienniki, które zawierają wiele dodatkowych informacji o pracownikach.Rotacja kłód w trybie ROZWIJANIE Rails?

Rutynowo kończę z plikami multigigabajtów development.log. Widziałem różne gadki dotyczące rotacji dzienników produkcji, jednak nie znalazłem niczego, co mogłoby się wydawać odpowiednie do rotacji development.log.

Jak obrócić swój development.log na co 100.megabytes lub tak? LUB CO JA PRZESŁAĆ to faktyczne obcinanie nagłówka pliku, aby w dzienniku pozostały tylko najnowsze elementy, do 100 MB najnowszych wpisów.

Grałem z tym trochę i zastanawiam się nad czymś więcej niż to, co obecnie istnieje i że być może powinienem wdrożyć coś, co będzie używać rubinu File.truncate jakoś, ale nie jestem pewien co do skuteczności to jeszcze na końcu pliku.

+0

na jakim serwerze jesteś? – Roger

+0

Działa na Mac OS X dla 'rozwoju'. Niektóre są w Linuksie w grupie. Jeśli mogę użyć nieswoistej metody, która byłaby najlepsza, lub mogę zrobić coś z 'case CONFIG ['host_os']' jeśli to konieczne. – ylluminate

+1

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

Odpowiedz

10

Można właściwie powiedzieć klasę Ruby Logger obracać plików w konstruktora:

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

Przykład:

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

W jednym z moich plików enrivornment mam następujący wiersz:

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

Utrzymuje ostatnich 10 logów, które są obracane co 1 MB.

+2

To działa ładnie, jednak w 3.2 klasa Logger jest przestarzała na rzecz ActiveSupport :: BufferedLogger, który najwyraźniej nie obsługuje rotacji. Denerwujący! –

+0

@CaffeineComa czy możesz wspierać swój wniosek? Używam Rails 3.2.2 i działa to całkiem dobrze, przynajmniej w trybie programowania, to jest zakres tego pytania. –

1

Na OSX użyłbym newsyslog

/etc/newsyslog.conf

Na Linux OS: logrotate

logrotate

+0

Jakieś przemyślenia na temat używania 'tail -c $ [100 * 1024 * 1024] development.log'? – ylluminate

+0

dobrze tbh naprawdę nie, jest całkiem masywny. Zwykle (do debugowania/rozwijania) wyczyść moją konsolę (cmd-k), a następnie uruchom mój kod, aby zobaczyć, co się stało. Oglądanie śladu 100 MB, nie, dziękuję :) I to zależy również od tego, czy inne osoby są uruchomione na twoim serwerze. Od tego czasu musisz podzielić bałagan różnych adresów IP. – Roger

+0

Hahahah, tak, to wciąż trochę duże. Kiedy już nie będziemy mieć tak szalonego węża z wężem gaśniczym, aby uzyskać jakieś dane, będę go przycinał prawdopodobnie do 10 MB. – ylluminate