You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS CloudWatch集成故障:日志流创建失败且动态日志不显示

Rails应用集成AWS CloudWatch日志的问题排查

我正在尝试将AWS CloudWatch与Rails应用集成,但遇到了一些问题,试过多种方法都没解决,也没找到CloudWatch的优质文档,求帮忙。

遇到的具体问题

  • 无法创建日志流(log stream)
  • 动态日志不显示

使用的Gemfile配置

gem 'aws-sdk'
gem 'lograge'

config/initializers/cloudwatch_log.rb配置代码

begin
    @cloudwatch_client = Aws::CloudWatchLogs::Client.new

    # Define the log group and log stream names
    @log_group_name = ENV.fetch('APPLICATION_LOG_GROUP_NAME', '/home/app/insight')
    @log_stream_name = "#{Time.now.strftime('%Y-%m-%d')}/$[LATEST]/#{Time.now.to_i}"
    Rails.logger.info "log_group_name: #{@log_group_name} and log_stream_name: #{@log_stream_name} in #{Rails.env} environment...!!!"
    
    @cloudwatch_client.create_log_stream({
        log_group_name: @log_group_name,
        log_stream_name: @log_stream_name
    })

    Rails.application.config.logger.extend(ActiveSupport::Logger.broadcast(Logger.new($stdout)))

    Rails.application.config.logger.extend(ActiveSupport::Logger.broadcast(@cloudwatch_client))
rescue Aws::Errors::MissingRegionError, Aws::Sigv4::Errors::MissingCredentialsError => e
    Rails.logger.info "be_admin: AWS credentials not found for CloudWatchLog...!!!"
end

production.rb配置代码

require "active_support/core_ext/integer/time"

Rails.application.configure do
  config.cache_classes = true

  config.eager_load = true

  config.consider_all_requests_local       = false
  config.action_controller.perform_caching = true

  config.public_file_server.enabled = true

  config.assets.compile = false

  config.flipper.preload = false

  config.active_storage.service = :local

  config.action_mailer.perform_caching = false

  config.active_support.report_deprecations = true

  logger           = ActiveSupport::Logger.new($stdout)
  logger.formatter = config.log_formatter
  config.logger = ActiveSupport::TaggedLogging.new(logger)

  # Set log level from LOG_LEVEL
  default_log_level = Rails.env.development? ? :debug : :info
  config_log_level  = ENV.fetch("LOG_LEVEL", default_log_level).to_s.downcase.to_sym
  config.log_level = if %i[debug info warn error fatal].include?(config_log_level)
                       config_log_level
                     else
                       default_log_level
                     end

  config.lograge.enabled = !Rails.env.development?

  config.lograge.formatter = Lograge::Formatters::Raw.new

  config.logger = Logger.new($stdout).tap do |logger|
    logger.formatter = config.log_formatter
    config.logger    = ActiveSupport::TaggedLogging.new(logger)
  end

  config.active_record.dump_schema_after_migration = false
end

更新1

添加以下代码后可创建日志流,但动态日志仍无法显示:

@cloudwatch_client.put_log_events({log_group_name: @log_group_name, log_stream_name: @log_stream_name, log_events: [{timestamp: Time.now.to_i * 1000, message: "logger initialted"}]})

内容的提问来源于stack exchange,提问作者Aniket Tiwari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 21:36:01