我正在查看我的生产日志,以调查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;条目。
是否有更好的方法在生产日志中记录应用重启?
答案 0 :(得分:1)
由于这个问题已经在这里停留了四个月而没有答案,我认为答案是:
是的,
rails日志中的连接到database.yml指定的数据库
只表示服务器已重新启动。
答案 1 :(得分:1)
实际上,当您的应用服务器(puma,独角兽,乘客等)或您的后台处理宝石(如sucker_punch,sidekiq等)启动新线程时,它将连接到数据库并打开连接。允许app /后台处理器访问的连接数在database.yml文件中。在database.yml中设置池数时,您需要考虑一个多线程服务器,例如puma或后台处理gem,它使用线程进行操作,例如sucker_punch或sidekiq。
首次启动应用时,您还会在日志中看到此信息。此外,rake / runner任务会将此信息标记到记录器中,因为它加载了rails环境,如果发生任何ActiveRecord事件,它将需要在应用程序主线程之外的数据库连接。 / p>
希望这有帮助。