Ruby on Rails中为何设置logger.debug为false后无任何调试信息输出?
- 内容介绍
- 文章标签
- 相关推荐
本文共计377个文字,预计阅读时间需要2分钟。
我遇到了一个布尔表达式的疑问,执行了logger.debug后得到了奇怪的结果。因此,我将我的日志代码简化如下,并注意到没有任何false被打印。在控制台中查看时,也看不到任何异常。代码如下:logg
我有一个布尔表达式的问题,当我做了一个logger.debug我得到了奇怪的结果,所以我将我的日志代码简化为以下内容,并且惊讶地看不到任何’false’被打印.在我的控制器中记录代码:
logger.debug 'true' logger.debug true logger.debug logger.debug 'false' logger.debug false logger.debug logger.debug '1 == 1' logger.debug 1 == 1 logger.debug logger.debug '1 == 0' logger.debug 1 == 0
其中打印出以下内容
true true false 1 == 1 true 1 == 0
……?我希望看到错误.当我在控制台中运行’1 == 0’或’put false’时,我得到了错误.我错过了什么吗?
任何想法为什么不打印’假’?
ruby版本:1.8.7-p352
rails版本:2.3.2
Rails Logger使用||在运行.to_s之前的代码中,对于nil和false失败.github.com/rails/rails/blob/master/activesupport/lib/active_support/buffered_logger.rb#L65
def add(severity, message = nil, progname = nil, &block) return if @level > severity message = (message || (block && block.call) || progname).to_s ## <- this line # If a newline is necessary then create a new message ending with a newline. # Ensures that the original message is not mutated. message = "#{message}\n" unless message[-1] == ?\n buffer << message auto_flush message end
你可以这样做:
logger.debug( false.to_s)
本文共计377个文字,预计阅读时间需要2分钟。
我遇到了一个布尔表达式的疑问,执行了logger.debug后得到了奇怪的结果。因此,我将我的日志代码简化如下,并注意到没有任何false被打印。在控制台中查看时,也看不到任何异常。代码如下:logg
我有一个布尔表达式的问题,当我做了一个logger.debug我得到了奇怪的结果,所以我将我的日志代码简化为以下内容,并且惊讶地看不到任何’false’被打印.在我的控制器中记录代码:
logger.debug 'true' logger.debug true logger.debug logger.debug 'false' logger.debug false logger.debug logger.debug '1 == 1' logger.debug 1 == 1 logger.debug logger.debug '1 == 0' logger.debug 1 == 0
其中打印出以下内容
true true false 1 == 1 true 1 == 0
……?我希望看到错误.当我在控制台中运行’1 == 0’或’put false’时,我得到了错误.我错过了什么吗?
任何想法为什么不打印’假’?
ruby版本:1.8.7-p352
rails版本:2.3.2
Rails Logger使用||在运行.to_s之前的代码中,对于nil和false失败.github.com/rails/rails/blob/master/activesupport/lib/active_support/buffered_logger.rb#L65
def add(severity, message = nil, progname = nil, &block) return if @level > severity message = (message || (block && block.call) || progname).to_s ## <- this line # If a newline is necessary then create a new message ending with a newline. # Ensures that the original message is not mutated. message = "#{message}\n" unless message[-1] == ?\n buffer << message auto_flush message end
你可以这样做:
logger.debug( false.to_s)

