问题描述
我目前正在GCP上工作,并将我的rails应用程序部署在GCP实例上。 我目前正在将https://github.com/brendeschuijmert/google-cloud-ruby/tree/master/google-cloud-logging用于计算引擎。
当我在Rails应用程序中使用它时。
Rails.logger.info "Hello World"
效果很好。
但是logger.warn "Hola Mundo"
无法正常工作。
我希望有人对此问题有所帮助。
谢谢
解决方法
如果您要尝试从控制器/模型或作为Rails结构一部分的其他文件之外调用logger
,则必须使用以下命令为您自己显式创建一个记录器:
logger = Logger.new(STDOUT) # Or wherever you want to log to
但是,如果Rails.logger
工作正常,则可能只需要一个别名logger = Rails.logger
就可以使用logger.warn
而不使用Rails名称空间前缀。您可能在一个没有帮助程序的文件中,该帮助程序为您提供了别名。
对API的更多挖掘表明,logger
源自ActiveSupport::LogSubscriber
-像ActionController
这样的几个类包括从该模块继承的子LogSubscriber
,因此具有他们可以使用logger
种方法。您可以手动将其别名为Rails.logger
,以使其在尝试调用它的任何地方都可以使用。
来源:https://api.rubyonrails.org/classes/ActiveSupport/LogSubscriber.html#method-c-logger