google-cloud-logging中的记录器不适用于Rails

问题描述

我目前正在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