Class: Intake::GCP::GCPSink

Inherits:
Sink
  • Object
show all
Defined in:
lib/intake/gcp/gcp_sink.rb

Overview

An Intake sink that writes to GCP Cloud Logging

Constant Summary collapse

LEVEL_MAP =

rubocop:enable Metrics/MethodLength

{
  debug: :DEBUG,
  info: :INFO,
  warn: :WARNING,
  error: :ERROR,
  fatal: :CRITICAL
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(log_name:, resource_id:) ⇒ GCPSink

Returns a new instance of GCPSink.



10
11
12
13
14
15
16
# File 'lib/intake/gcp/gcp_sink.rb', line 10

def initialize(log_name:, resource_id:)
  super()
  @log_name = log_name
  @logging = Google::Cloud::Logging.new
  @writer = @logging.async_writer
  @resource = @logging.resource resource_id
end

Instance Method Details

#drain(event) ⇒ Object

rubocop:disable Metrics/MethodLength



19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/intake/gcp/gcp_sink.rb', line 19

def drain(event)
  entry = @logging.entry(
    timestamp: event.timestamp,
    log_name: @log_name,
    resource: @resource,
    severity: LEVEL_MAP.fetch(event.level.name, :DEFAULT),
    payload: event.message,
    labels: event.data.dup.merge!({
                                    logger_name: event.logger_name
                                  })
  )

  @writer.write_entries entry
end