2011-02-08 4 views
3

Каковы «оптимальные» варианты ведения журнала для Rails3? Кто-нибудь может предложить хорошие драгоценные камни или методы для ведения журнала.Rails3 настраиваемые параметры ведения журнала?

В общем, что такое соглашение для пользовательских, неконтролируемых, немодельных материалов? Если я пользовательский регистратор так:

#custom_logger.rb 
class CustomLogger < Logger 
    def format_message(severity, timestamp, progname, msg) 
    "#{msg}\n" 
    end 
end 

logfile = File.open(RAILS_ROOT + '/log/custom.log', 'a') #create log file 
logfile.sync = true #automatically flushes data to file 
CUSTOM_LOGGER = CustomLogger.new(logfile) #constant accessible anywhere 

(украдено из here) Если что идти в файл в «/ Библиотека»? В "application.rb"? Или в инициализаторе?

Я не могу найти ничего, что описывает эти небольшие отличия от предыдущих версий Rails.

Благодаря

ответ

2

я положил мину в application.rb, потому что это всего лишь несколько строк. Я ленив. Если вы поместите свой класс в файл в lib /, вам придется потребовать его вручную или настроить lib/autoloading.

Вот мой регистратор код:

application.rb:

class DreamLogFormatter < Logger::Formatter 
    def call(severity, time, progname, msg) 
    "[%s(%d)%5s] %s\n" % [time.to_s(:short), $$, severity, msg2str(msg)] 
    end 
end 

....

config.logger = Logger.new(Rails.root.join('log', "#{Rails.env}.log"), 10, 30*1024*1024) 
config.logger.formatter = DreamLogFormatter.new 

Примечание валяюсь журналы каждый 30Mb и сохранить последние 10 журналов.

+0

Rails использует BufferedLogger. Я прочитал некоторое обсуждение списка рассылки рубинового ядра, и это кажется довольно произвольным. Единственное преимущество, которое они описали, было не чередованием для нескольких процессов, написанных одновременно, но класс Stdlib Logger для 1.9.2 имеет в нем Mutex, который, похоже, выполняет ту же самую вещь. За исключением Logger легко изменить, и имеет автоматический журнал прокатки. Я просто приеду в Монго, если это когда-нибудь станет серьезной проблемой. – Duke

+0

Следите за этим - если вы используете несколько процессов в процессе производства (что вам нужно), Logger будет чередовать сообщения. – Duke