Для переключения удобно использовать 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.comP.S. только вернулся из отпуска, потерявшим -- извиняйте )