我想在日志输出中包含调用记录器的类的名称,例如:
[MyClass] here is the message
我已经看到了使用Contexts的选项,但是当我记录内容时,我不希望在我的应用程序中做这样的事情(请记住,我希望每个日志中都有类名)消息):
NDC.push('class:' + self.class.name)
logger.debug 'hello'
我想打电话:
logger.debug 'hello'
有什么建议吗?
答案 0 :(得分:8)
最好使用上下文,但您可以使用自己的格式化程序(请参阅Log4r formatters)
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
,我的建议实际上是创建一个类似的Logging模块:
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
可能不完全那样,但你明白了。