Переключение уровня логов процесса без остановки

Posted on July 23, 2008
Некоторые процессы довольно долго могут загружаться, а постоянно держать их в debug режиме логгирования нецелесообразно в связи с разрастанием логов.
Для переключения удобно использовать unix сигналы. А именно SIG-USR1 и SIG-USR2.
Например:

require 'rubygems'
require 'log4r'
 
# Настроим логгер
@log = Log4r::Logger.new 'log'
@log.outputters = Log4r::StdoutOutputter.new 'console'
@log.level = Log4r::INFO
#создадим поток генерирующий сообщения
worker = Thread.new do
  while (true) do
    @log.info 'Hello!'
    @log.debug 'Debug!'
    sleep(1)
  end
end
 
# переключим логгер в дебаг с помощью USR1 сигнала
trap("USR1") {
 @log.level = @log.level == Log4r::INFO ? Log4r::DEBUG : Log4r::INFO
}
 
# "чисто" убъем процесс при INT сигнале
trap("INT") { worker.terminate }
 
# запустим поток
worker.join
Взято с igvita.com
P.S. только вернулся из отпуска, потерявшим -- извиняйте )