2011-10-16 12 views
19

Natknąłem się, aby dowiedzieć się, że mój plik logów rails3.1 jest bardzo duży, około 21 MB. Czy to pod względem wielkości normalnym? Jaki plik logu chciałby mieć w środowisku produkcyjnym? Poza tym, czy mogę się pozbyć logu? DziękiZbyt duży rozmiar pliku dziennika w szynach

Odpowiedz

19

możesz po prostu usunąć plik!
Szyny utworzą nowy dziennik, jeśli taki nie istnieje.
Oczywiście należy zapisać/wykonać kopię zapasową pliku, jeśli jest to ważne, ale zazwyczaj tak nie jest.
Możesz również skompresować zarchiwizowany plik (a następnie usunąć źródło), jeśli chcesz zachować go na tym samym dysku, ale nadal oszczędzasz miejsce.

automatyczne obracanie plików dziennika (najlepsze długoterminowe rozwiązanie) log użycie obracać jak opisano tutaj:

Ruby on Rails production log rotation

następnie można go ustawić i zapomnieć!

Aby rzeczywiście zmienić to, co dostaje zalogowany zobacz:

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

+0

mam na myśli, że jeśli to jest możliwe, że szyny nie wygenerować plik dziennika. – Jason

+0

Nie wiem, czy można to łatwo zrobić. Może alias to dev/null? Nie, lepiej użyć obracania, więc dodałem to również. –

+0

rozumiem, dziękuję. – Jason

52

Folder log aplikacji Rails zawiera trzy pliki dziennika odpowiadające każdemu ze standardowych środowisk. Pliki dziennika mogą z czasem rosnąć bardzo duże. Dostarczono rake task, aby umożliwić łatwe usuwanie plików dziennika.

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

Ten anwser powinien był zostać zaakceptowany. Podczas rozmieszczania pasażerów, po usunięciu pliku dziennika, szyny nie tworzą nowego. – EGurelli

4

According to the documentation, jeśli chcesz ograniczyć rozmiar folderu dziennika, umieścić to w swoim „development.rb' akt:

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

z tym, pliki dziennika nigdy nie będzie większy niż 50 Mb. Możesz zmienić rozmiar według własnych preferencji. "1" w drugim parametrze oznacza, że ​​zachowany zostanie 1 historyczny plik dziennika, więc będziesz mieć do 100 MB dzienników - bieżący dziennik i poprzedni fragment 50 MB.

0

Tak, można za pomocą składni tak:

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

Przykład:

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

To nie tylko użyciem Rails dziennika, można za pomocą pliku dziennika jakichkolwiek usług uruchamianych z szyn, takich jako: dziennik rpush, ...

0

config.logger = ActiveSupport::Logger.new(nil) robi lewę i całkowicie wyłącza rejestrowanie w pliku (dane wyjściowe konsoli są zachowywane).

3

ja automatycznie wyczyścić logi w rozwoju na każdym starcie serwera z config/initializers/clear_development_log.rb:

if Rails.env.development? 
    `rake log:clear` 
end 
0

A sprawiedliwy kompromis, do inicjowania:

Rake::Task['log:clear'].invoke if Rails.env.development? || Rails.env.test? 
Powiązane problemy