Ruby on rails 是不是;连接到database.yml指定的数据库;只需指示服务器已启动
我正在查看我的生产日志,以调查rails 3.2应用程序上的一个bug。备份服务器时,我重新启动了应用程序。生产日志中重启的唯一证据似乎是以下条目: 连接到database.yml指定的数据库 这是唯一出现此消息的场合吗?也就是说,我是否可以始终假定此消息表示应用程序启动 搜索stackoverflow时,我找到的对此日志输出的引用似乎将其视为错误。例如: 但是,我认为这实际上是错误发生之前的最后一条成功日志消息。也就是说,它不是一条错误消息,而是指示应用程序在错误发生之前已启动到数据库的连接 将此作为应用程序重启时的唯一日志输出似乎让我感到困惑(从其他stackoverflow条目来看,它也让其他条目感到困惑) 我在我的应用程序中添加了一个初始值设定项“config/initializers/log_app_start.rb”,内容如下:Ruby on rails 是不是;连接到database.yml指定的数据库;只需指示服务器已启动,ruby-on-rails,Ruby On Rails,我正在查看我的生产日志,以调查rails 3.2应用程序上的一个bug。备份服务器时,我重新启动了应用程序。生产日志中重启的唯一证据似乎是以下条目: 连接到database.yml指定的数据库 这是唯一出现此消息的场合吗?也就是说,我是否可以始终假定此消息表示应用程序启动 搜索stackoverflow时,我找到的对此日志输出的引用似乎将其视为错误。例如: 但是,我认为这实际上是错误发生之前的最后一条成功日志消息。也就是说,它不是一条错误消息,而是指示应用程序在错误发生之前已启动到数据库的连接
Rails.logger.info 'App starting: Initializer called'
我现在在重新启动时的日志中看到:
连接到database.yml指定的数据库
应用程序启动:已调用初始值设定项
这至少为日志条目添加了一些上下文。但是,最好在“连接到数据库”条目之前启动“应用程序”
有没有更好的方法将应用程序重启记录在生产日志中?由于这个问题已经在这里讨论了四个月没有答案,我认为答案是: 对 连接到database.yml指定的数据库
在rails日志中,仅表示服务器已重新启动。实际上,当您的应用程序服务器(puma、unicorn、passenger等)或后台处理gem(如sucker_punch、sidekiq等)启动新线程时,它将连接到数据库并打开连接。应用程序/后台处理器允许点击的连接数位于database.yml文件中。在database.yml中设置池计数时,需要考虑多线程服务器(如puma)或后台处理gem,该服务器使用线程进行操作(如sucker_punch或sidekiq) 当您第一次启动应用程序时,您还将在日志中看到此信息。另外,rake/runner任务会将此信息标记到记录器中,因为它会加载rails环境,如果发生任何ActiveRecord事件,则需要在应用程序的主线程之外建立db连接
希望这能有所帮助。是的-我没有考虑多线程或多服务器实例场景。正如你所说,这可能会使事情更加复杂。很高兴我能提供一个解释。一开始我也花了一点时间才意识到这一点。判断数据库池限制时要考虑的好事情。