Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Rails控制台没有将SQL语句输出到我的开发日志_Ruby_Ruby On Rails 3_Logging_Development Environment - Fatal编程技术网

Ruby Rails控制台没有将SQL语句输出到我的开发日志

Ruby Rails控制台没有将SQL语句输出到我的开发日志,ruby,ruby-on-rails-3,logging,development-environment,Ruby,Ruby On Rails 3,Logging,Development Environment,当我通过本地主机访问Webrick服务器或运行rails迁移时,我的development.log被正确写入。但是,当我用“rails c”启动rails控制台,然后尝试创建一个新的数据库对象并通过“user.save”之类的命令保存它时,我在控制台中看到SQL语句,但在开发日志中没有写入任何内容 大多数人在回答类似问题时会说“检查以确保配置设置为正确的环境”。我已经这样做了,并且可以在我的系统上说,这发生在一个全新的rails应用程序上 任何帮助都将不胜感激。谢谢 rails控制台从不写入日志

当我通过本地主机访问Webrick服务器或运行rails迁移时,我的development.log被正确写入。但是,当我用“rails c”启动rails控制台,然后尝试创建一个新的数据库对象并通过“user.save”之类的命令保存它时,我在控制台中看到SQL语句,但在开发日志中没有写入任何内容

大多数人在回答类似问题时会说“检查以确保配置设置为正确的环境”。我已经这样做了,并且可以在我的系统上说,这发生在一个全新的rails应用程序上


任何帮助都将不胜感激。谢谢

rails控制台从不写入日志文件,但是您可以非常轻松地实现它,例如,如果您在启动rails控制台后执行以下操作

ActiveRecord::Base.logger = Logger.new STDOUT
rails将把所有SQL语句记录到标准输出中,从而在终端中显示它们。 由于
Logger.new
接受任何流作为第一个参数,您可以让它写入rails development.log:

ActiveRecord::Base.logger = Logger.new File.open('log/development.log', 'a')

我在Rails 2.3.8中,上面的答案对我来说并不适用

ActiveRecord::Base.logger = Logger.new STDOUT
以下事实上是有效的:

ActiveRecord::Base.connection.instance_variable_set :@logger, Logger.new(STDOUT)

参考资料

谢谢您的回复。您说Rails控制台从不写入日志文件。对我来说,这似乎增加了Michael Hartl在“Ruby on Rails教程3”第6.1.3节中所教内容的可能性。。上面写着:。。在控制台上工作时,关注开发日志非常有用,它记录了活动记录发出的实际低级SQL语句,如图6.4所示。在Unix命令行中获取此输出的方法是跟踪日志:$tail-f log/development.log-在这种情况下,我是否要将其视为正在写入日志的活动记录?如果是的话。。我敢肯定,rails通常不会以控制台模式登录到文件。如果我错了会很尴尬:),但也许我错了?或者你错过了Hartl书中的一些设置部分?我没有读过那本书,所以我不知道。确切地说,Rails的不同部分,即ActionController、ActiveRecord等,都会写入日志。您可以为这些框架设置不同的日志记录器,或者只设置Rails.logger=logger.new(STDOUT),但在Rails控制台中,您没有从控制器等进行日志记录,因为您通常只使用版本3.1.1确认的模型:Rails控制台不记录到开发。log.3.2.x添加了“连接到由database.yml指定的数据库”到开发日志,但SQL语句被发送到标准输出。