2012-03-06 20 views
8

Bir Rails 3.1 için (çok yakında 3.2 olacak), çok fazla sayıda ek çalışan bilgisine sahip olan çok ayrıntılı günlük kayıtlarına sahibim.Raylar GELİŞTİRME modunda günlük döndürme?

rutin olarak multigigabyte development.log dosyaları ile biter. Dönen üretim günlükleri etrafında çeşitli sohbetler gördüm, ancak development.log rotasyonuna uygun görünen hiçbir şey bulamadım.

development.log'unuzu her 100.megabytes numaralı telefondan nasıl döndürürsünüz? VEYA TERCİH EDİLMESİ GERÇEK, dosya başını kesmek içindir, böylece yalnızca en son öğeler günlüğe kaydedilir, en son girişlerin 100MB'a kadar.

bu biraz ile oynamış ve daha ve oldukça bu şu anda var olan ve belki de ben bir şekilde yakut File.truncate kullanacağı bir şey uygulamak gerektiğini de ben etkinliğinin emin değilim gibi bir şey daha düşünüyorum Bu henüz dosyanın kuyruk sonunda henüz.

+0

Hangi sunucudasınız? – Roger

+0

Mac OS X'te "geliştirme" için çalışıyor. Bazıları grupta linux üzerindedir. Eğer en iyi olamayacak bir yöntem kullanabilirsem ya da gerekirse CONFIG ['host_os'] 'durumunda bir şey yapabilirim. – ylluminate

+1

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

cevap

10

Aslında yapıcı dosyaları döndürmek için Ruby Kaydedici sınıfını söyleyebilir:

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

Örnek: Bu, her 1 MB döndürülür son 10 logfiles tutar

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

: Ben aşağıdaki satırı var benim enrivornment dosyalarından birinde

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

.

+2

Bu, güzel çalışır, ancak 3.2'de Logger sınıfı, görünüşe göre rotasyonu desteklemeyen ActiveSupport :: BufferedLogger lehine önerilmemektedir. Sinir bozucu! –

+0

@CaffeineComa çıkarımınızı destekleyebilir misiniz? Rails 3.2 kullanıyorum.2 ve bu oldukça iyi çalışıyor, en azından geliştirme modunda, yani bu sorunun kapsamı. –

1

OSX'te i Linux işletim sistemi üzerinde newsyslog

/etc/newsyslog.conf

kullanırsınız: logrotate

logrotate

+0

'tail -c $ [100 * 1024 * 1024] development.log' kullanımıyla ilgili herhangi bir düşünce var mı? – ylluminate

+0

de tbh gerçekten değil, oldukça muazzam. Normalde (hata ayıklama/devlopment için) konsolumu temizlerim (cmd-k) ve sonra ne olduğunu görmek için kodumu çalıştırırım. Bir 100 MB iz izlemek, hayır teşekkürler :) Ve diğer insanlar dev env üzerinde çalışıyorsa da bağlıdır. O zamandan beri farklı IP'lerin dağınıklığını bölmeniz gerekiyor. – Roger

+0

Hahahah, evet, hala biraz büyük. Bazı veriler için böyle bir çılgın yangın hortumu yayılmaya başladıktan sonra, muhtemelen 10MB gibi bir şeye kırpacağım. – ylluminate

İlgili konular