是"连接到database.yml指定的数据库"只是表明服务器已经启动

时间:2015-03-09 09:55:48

标签: ruby-on-rails

我正在查看我的生产日志,以调查rails 3.2 app上的错误。在重新启动服务器时,我重新启动了应用程序。生产日志中重新启动的唯一证据似乎就是这个条目:

  

连接到database.yml指定的数据库

这是此消息出现的唯一场合吗?也就是说,我是否可以始终假设此消息表明应用程序已启动?

搜索stackoverflow,我发现此日志输出的引用似乎将其视为错误。例如:

what does "Connecting to database specified by database.yml" in the log file mean?

但是,我认为这实际上是错误发生前最后一次成功的日志消息。也就是说,它不是错误消息,而是指示应用程序在发生错误之前就启动了与数据库的连接。

将此作为app重启的唯一日志输出似乎让我感到困惑(并且从其他stackoverflow条目中,它也会让其他人感到困惑)。

我已经添加了初始化程序' config / initializers / log_app_start.rb'使用此内容访问我的应用:

Rails.logger.info 'App starting: Initializer called'

我现在在登录重启时得到这个:

  

连接到database.yml指定的数据库

     

应用程序启动:名为

的初始化程序

至少在日志条目中添加了一些上下文。但是,让应用程序启动'将会很高兴。在“连接到数据库”之前#39;条目。

是否有更好的方法在生产日志中记录应用重启?

2 个答案:

答案 0 :(得分:1)

由于这个问题已经在这里停留了四个月而没有答案,我认为答案是:

是的,

  

连接到database.yml指定的数据库

rails日志中的

只表示服务器已重新启动。

答案 1 :(得分:1)

实际上,当您的应用服务器(puma,独角兽,乘客等)或您的后台处理宝石(如sucker_punch,sidekiq等)启动新线程时,它将连接到数据库并打开连接。允许app /后台处理器访问的连接数在database.yml文件中。在database.yml中设置池数时,您需要考虑一个多线程服务器,例如puma或后台处理gem,它使用线程进行操作,例如sucker_punch或sidekiq。

首次启动应用时,您还会在日志中看到此信息。此外,rake / runner任务会将此信息标记到记录器中,因为它加载了rails环境,如果发生任何ActiveRecord事件,它将需要在应用程序主线程之外的数据库连接。 / p>

希望这有帮助。