问题 如何在脚本/控制台中禁用记录器


在我的.irbrc文件中,我需要'logger'来让我看到在脚本/控制台中查询ActiveRecords时执行的SQL。

我的问题是,我该怎么做 暂时 关闭记录器,以便它只显示几个ActiveRecord查询的SQL?


6204
2017-11-05 02:45


起源



答案:


要在脚本/控制台中切换日志记录,请使用以下内容:

def show_log
  change_log(STDOUT)
end

def hide_log
  change_log(nil)
end

def change_log(stream, colorize=true)
  ActiveRecord::Base.logger = ::Logger.new(stream)
  ActiveRecord::Base.clear_all_connections!
  ActiveRecord::Base.colorize_logging = colorize
end

14
2017-11-05 13:09



这正是我追求的,谢谢! - Coderama
很酷,我喜欢这个!虽然对于Rails 3,您需要取出change_log方法的最后一行。此外,为该方法返回nil将提供更清晰的“切换”输出。 - janechii


答案:


要在脚本/控制台中切换日志记录,请使用以下内容:

def show_log
  change_log(STDOUT)
end

def hide_log
  change_log(nil)
end

def change_log(stream, colorize=true)
  ActiveRecord::Base.logger = ::Logger.new(stream)
  ActiveRecord::Base.clear_all_connections!
  ActiveRecord::Base.colorize_logging = colorize
end

14
2017-11-05 13:09



这正是我追求的,谢谢! - Coderama
很酷,我喜欢这个!虽然对于Rails 3,您需要取出change_log方法的最后一行。此外,为该方法返回nil将提供更清晰的“切换”输出。 - janechii


您可以通过在生产模式下运行或调整记录器文件来关闭记录器 development.rb 如果您实际上在localhost上进行开发运行,那么您的config目录中的环境文件。


1
2017-11-05 02:50



谢谢回复。但是我在脚本/控制台中进行了临时解决方案。例如我在脚本/控制台中,正在努力解决对记录器的需求,但后来我想阻止记录器显示我刚要运行的一个AR查询的SQL。如何关闭记录器,然后在脚本/控制台中将其重新打开? - Coderama
是的,我发布之后就看到了。我不知道如何只为几行sql行:( - thenengah
检查 scripts 你在rails应用程序中的文件夹,我想你可以关闭记录器 console 使用。 - thenengah