Использование контекстов предпочтительнее, но вы можете использовать свой собственный форматер (см. Форматеры Log4r )
logger = Logger.new 'test'
outputter = Outputter.stdout
outputter.formatter = PatternFormatter.new(:pattern => "%l - kittens - %m")
logger.outputters = outputter
logger.info 'adorable' # => INFO - kittens - adorable
Или, вообще-то, потому что вы хотите, чтобы он ссылался на self.class
Мой совет на самом деле - создать модуль ведения журнала, который работает так:
module Logging
def logger
return @logger if @logger
@logger = Logger.new 'test'
outputter = Outputter.stdout
outputter.formatter = PatternFormatter.new(:pattern => "%l - #{self.class} - %m")
@logger.outputters = outputter
@logger
end
end
class HasLogging
include Logging
def test
logger.info 'adorable'
end
end
test = HasLogging.new
test.test # => INFO - HasLogging - adorable
Возможно, не совсем так, но вы поняли.