创意Ruby-way将字符串计算为类常量之一

dli*_*922 1 ruby logging constants

你可能知道Logger:Application有常量(Logger :: DEBUG,Logger :: WARN等......)

我的日志级别是我的配置中的字符串.将该字符串传递给我的记录器会出错.我将不得不重写level方法来接受一个字符串.

log = Logger.new($CONFIG.log.file, $CONFIG.log.freq)
log.level = $CONFIG.log.level ## << Error
#log.level = Logger::WARN ## < manually settings it as example in doc. 
Run Code Online (Sandbox Code Playgroud)

你将如何动态设置日志记录级别?

And*_*all 5

用途const_get:

log_level = 'WARN'
log.level = Logger.const_get(log_level)  #=> 2  (which is the value of Logger::WARN)
Run Code Online (Sandbox Code Playgroud)

小心你的输入不过,因为Logger::Error&Logger::ERROR是不一样的东西.