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
相关产品推荐
相关产品推荐

