Class: Gcloud::Logging::Sink

Inherits:
Object
  • Object
show all
Defined in:
lib/gcloud/logging/sink.rb,
lib/gcloud/logging/sink/list.rb

Overview

# Sink

Used to export log entries outside Cloud Logging. When you create a sink, new log entries are exported. Cloud Logging does not send previously-ingested log entries to the sink’s destination.

Before creating the sink, ensure that you have granted ‘[email protected]` permission to write logs to the destination. See [Permissions for writing exported logs](cloud.google.com/logging/docs/export/configure_export#setting_product_name_short_permissions_for_writing_exported_logs).

You can retrieve an existing sink with Project#sink.

Examples:

require "gcloud"

gcloud = Gcloud.new
logging = gcloud.logging
storage = gcloud.storage

bucket = storage.create_bucket "my-logs-bucket"

# Grant owner permission to Cloud Logging service
email = "[email protected]"
bucket.acl.add_owner "group-#{email}"

sink = logging.create_sink "my-sink",
                           "storage.googleapis.com/#{bucket.id}"

See Also:

Defined Under Namespace

Classes: List

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeSink

Returns a new instance of Sink.



69
70
71
72
# File 'lib/gcloud/logging/sink.rb', line 69

def initialize
  @service = nil
  @grpc = Google::Logging::V2::LogSink.new
end

Instance Attribute Details

#grpcObject



65
66
67
# File 'lib/gcloud/logging/sink.rb', line 65

def grpc
  @grpc
end

#serviceObject



61
62
63
# File 'lib/gcloud/logging/sink.rb', line 61

def service
  @service
end

Class Method Details

.from_grpc(grpc, service) ⇒ Object



207
208
209
210
211
212
# File 'lib/gcloud/logging/sink.rb', line 207

def self.from_grpc grpc, service
  new.tap do |f|
    f.grpc = grpc
    f.service = service
  end
end

.resolve_version(version) ⇒ Object



216
217
218
219
220
221
# File 'lib/gcloud/logging/sink.rb', line 216

def self.resolve_version version
  ver = version.to_s.upcase.to_sym
  ver = Google::Logging::V2::LogSink::VersionFormat.resolve ver
  return ver if ver
  Google::Logging::V2::LogSink::VersionFormat::VERSION_FORMAT_UNSPECIFIED
end

Instance Method Details

#deleteBoolean

Permanently deletes the logs-based sink.

Examples:

require "gcloud"

gcloud = Gcloud.new
logging = gcloud.logging
sink = logging.sink "severe_errors"
sink.delete

Returns:

  • (Boolean)

    Returns ‘true` if the sink was deleted.



197
198
199
200
201
202
203
# File 'lib/gcloud/logging/sink.rb', line 197

def delete
  ensure_service!
  service.delete_sink name
  return true
rescue GRPC::BadStatus => e
  raise Gcloud::Error.from_error(e)
end

#destinationObject

The export destination. See [Exporting Logs With Sinks](cloud.google.com/logging/docs/api/tasks/exporting-logs).



85
86
87
# File 'lib/gcloud/logging/sink.rb', line 85

def destination
  @grpc.destination
end

#destination=(destination) ⇒ Object

Updates the export destination. See [Exporting Logs With Sinks](cloud.google.com/logging/docs/api/tasks/exporting-logs).



92
93
94
# File 'lib/gcloud/logging/sink.rb', line 92

def destination= destination
  @grpc.destination = destination
end

#filterObject

An [advanced logs filter](cloud.google.com/logging/docs/view/advanced_filters) that defines the log entries to be exported. The filter must be consistent with the log entry format designed by the ‘version` parameter, regardless of the format of the log entry that was originally written to Cloud Logging.



103
104
105
# File 'lib/gcloud/logging/sink.rb', line 103

def filter
  @grpc.filter
end

#filter=(filter) ⇒ Object

Updates the [advanced logs filter](cloud.google.com/logging/docs/view/advanced_filters) that defines the log entries to be exported. The filter must be consistent with the log entry format designed by the ‘version` parameter, regardless of the format of the log entry that was originally written to Cloud Logging.



114
115
116
# File 'lib/gcloud/logging/sink.rb', line 114

def filter= filter
  @grpc.filter = filter
end

#nameObject

The client-assigned sink identifier. Sink identifiers are limited to 1000 characters and can include only the following characters: ‘A-Z`, `a-z`, `0-9`, and the special characters `_-.`.



78
79
80
# File 'lib/gcloud/logging/sink.rb', line 78

def name
  @grpc.name
end

#reload!Object Also known as: refresh!

Reloads the logs-based sink with current data from the Logging service.



176
177
178
179
180
181
# File 'lib/gcloud/logging/sink.rb', line 176

def reload!
  ensure_service!
  @grpc = service.get_sink name
rescue GRPC::BadStatus => e
  raise Gcloud::Error.from_error(e)
end

#saveObject

Updates the logs-based sink.

Examples:

require "gcloud"

gcloud = Gcloud.new
logging = gcloud.logging
sink = logging.sink "severe_errors"
sink.filter = "logName:syslog AND severity>=ERROR"
sink.save


166
167
168
169
170
171
# File 'lib/gcloud/logging/sink.rb', line 166

def save
  ensure_service!
  @grpc = service.update_sink name, destination, filter, version
rescue GRPC::BadStatus => e
  raise Gcloud::Error.from_error(e)
end

#unspecified?Boolean

Helper to determine if the sink’s version is ‘VERSION_FORMAT_UNSPECIFIED`.

Returns:

  • (Boolean)


138
139
140
# File 'lib/gcloud/logging/sink.rb', line 138

def unspecified?
  !(v1? || v2?)
end

#v1?Boolean

Helper to determine if the sink’s version is ‘V1`.

Returns:

  • (Boolean)


150
151
152
# File 'lib/gcloud/logging/sink.rb', line 150

def v1?
  version == :V1
end

#v2?Boolean

Helper to determine if the sink’s version is ‘V2`.

Returns:

  • (Boolean)


144
145
146
# File 'lib/gcloud/logging/sink.rb', line 144

def v2?
  version == :V2
end

#versionObject

The log entry version used when exporting log entries from this sink. This version does not have to correspond to the version of the log entry when it was written to Cloud Logging.



122
123
124
# File 'lib/gcloud/logging/sink.rb', line 122

def version
  @grpc.output_version_format
end

#version=(version) ⇒ Object

Updates the log entry version used when exporting log entries from this sink. This version does not have to correspond to the version of the log entry when it was written to Cloud Logging. Accepted values are ‘:VERSION_FORMAT_UNSPECIFIED`, `:V2`, and `:V1`.



131
132
133
# File 'lib/gcloud/logging/sink.rb', line 131

def version= version
  @grpc.output_version_format = self.class.resolve_version(version)
end