【问题标题】:logger in google-cloud-logging is not working for railsgoogle-cloud-logging 中的记录器不适用于 rails
【发布时间】:2021-01-27 05:22:48
【问题描述】:

我目前正在开发 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.warn 不工作?或者您正在尝试使用带有Rails 前缀的命令?
  • 谢谢@Vidur。 Rails.logger.warn 也运行良好。但是logger.warn 不起作用。我不确定是什么问题。
  • 您收到的错误信息是什么?以及您试图从哪里调用记录器 - 控制器/模型?
  • 我正在尝试在application_controller.rb 中使用记录器。当我使用logger 而不是Rails.logger 时,我不会得到任何错误
  • 您有没有机会查看 Google 为 Ruby 提供的 Cloud Logging 库 [1]? Stackdriver [2] 有一些 Ruby 示例。 [1] cloud.google.com/logging/docs/setup/ruby [2] github.com/GoogleCloudPlatform/ruby-docs-samples/blob/…

标签: ruby-on-rails google-cloud-platform google-compute-engine google-cloud-logging


【解决方案1】:

如果您尝试从控制器/模型或属于 Rails 结构一部分的其他文件外部调用 logger - 您必须为自己显式创建一个记录器:

logger = Logger.new(STDOUT) # Or wherever you want to log to

但是,如果 Rails.logger 工作正常,那么您可能只需要像 logger = Rails.logger 这样的别名来允许您在没有 Rails 命名空间前缀的情况下使用 logger.warn。您可能在一个文件中,该文件还没有为您起别名的助手。

对 API 的更多挖掘表明 logger 源自 ActiveSupport::LogSubscriber - 像 ActionController 这样的几个类包括从该模块继承的子 LogSubscribers,因此它们可以使用 logger 方法。您可以手动将其别名为 Rails.logger,以便在您尝试调用它的任何地方都可以使用它。

来源:https://api.rubyonrails.org/classes/ActiveSupport/LogSubscriber.html#method-c-logger

【讨论】:

猜你喜欢
  • 2018-05-25
  • 1970-01-01
  • 2020-09-13
  • 1970-01-01
  • 2021-05-27
  • 1970-01-01
  • 2023-02-23
  • 2018-10-03
  • 2020-06-23
相关资源
最近更新 更多