Cloud Logging API - Class Google::Cloud::Logging::Project (v2.4.0)

Reference documentation and code samples for the Cloud Logging API class Google::Cloud::Logging::Project.

Project

Projects are top-level containers in Google Cloud Platform. They store information about billing and authorized users, and they control access to Stackdriver Logging resources. Each project has a friendly name and a unique ID. Projects can be created only in the Google Developers Console. See Google::Cloud#logging.

See Google::Cloud#logging

Inherits

  • Object

Example

require "google/cloud/logging"

logging = Google::Cloud::Logging.new
entries = logging.entries

Methods

#async_writer

def async_writer(max_batch_count: 10_000, max_batch_bytes: 10_000_000, max_queue_size: 100, interval: 5, threads: 10, partial_success: false) -> Google::Cloud::Logging::AsyncWriter

Creates an object that buffers, batches, and transmits log entries efficiently. Writing log entries to this object is asynchronous and will not block.

Batches that cannot be delivered immediately are queued. When the queue is full new batch requests will raise errors that can be consumed using the AsyncWriter#on_error callback. This provides back pressure in case the writer cannot keep up with requests.

This object is thread-safe; it may accept write requests from multiple threads simultaneously, and will serialize them when executing in the background thread.

Parameters
  • max_batch_count (Integer) (defaults to: 10_000) — The maximum number of log entries that may be buffered and sent in a batch.
  • max_batch_bytes (Integer) (defaults to: 10_000_000) — The maximum byte size of log entries that may be buffered and sent in a batch.
  • max_queue_size (Integer) (defaults to: 100) — The maximum number of pending write_entries requests that may be queued.
  • interval (Numeric) (defaults to: 5) — The number of seconds to buffer log entries before a batch is written. Default is 5.
  • threads (Integer) (defaults to: 10) — The number of threads used to make batched write_entries requests. Default is 10.
  • partial_success (Boolean) (defaults to: false) — Whether valid entries should be written even if some other entries fail due to INVALID_ARGUMENT or PERMISSION_DENIED errors when communicating to the Stackdriver Logging API.
Returns
Example
require "google/cloud/logging"

logging = Google::Cloud::Logging.new

async = logging.async_writer

entry1 = logging.entry payload: "Job started."
entry2 = logging.entry payload: "Job completed."

labels = { job_size: "large", job_code: "red" }
resource = logging.resource "gae_app",
                            "module_id" => "1",
                            "version_id" => "20150925t173233"

async.write_entries [entry1, entry2],
                    log_name: "my_app_log",
                    resource: resource,
                    labels: labels

#create_metric

def create_metric(name, filter, description: nil) -> Google::Cloud::Logging::Metric
Aliases

Creates a new logs-based metric for Google Cloud Monitoring.

Parameters
  • name (String) — The client-assigned metric identifier. Metric identifiers are limited to 1000 characters and can include only the following characters: A-Z, a-z, 0-9, and the special characters _-.,+!*',()%/\. The forward-slash character (/) denotes a hierarchy of name pieces, and it cannot be the first character of the name.
  • filter (String) — An advanced logs filter.
  • description (String, nil) (defaults to: nil) — A description of this metric, which is used in documentation.
Example
require "google/cloud/logging"

logging = Google::Cloud::Logging.new
metric = logging.create_metric "errors", "severity>=ERROR"

#create_sink

def create_sink(name, destination, filter: nil, unique_writer_identity: nil) -> Google::Cloud::Logging::Sink
Aliases

Creates a new project sink. When you create a sink, only new log entries that match the sink's filter are exported. Stackdriver Logging does not send previously-ingested log entries to the sink's destination.

Before creating the sink, ensure that you have granted the sink's unique writer identity permission to write logs to the destination. See Destination permissions.

Overloads
def create_sink(name, destination, filter: nil, unique_writer_identity: nil) -> Google::Cloud::Logging::Sink
Creates a new project sink. When you create a sink, only new log entries that match the sink's filter are exported. Stackdriver Logging does not send previously-ingested log entries to the sink's destination.

Before creating the sink, ensure that you have granted the sink's unique writer identity permission to write logs to the destination. See Destination permissions.

Parameters
  • name (String) — 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 _-..
  • destination (String) — The resource name of the export destination. See About sinks for examples.
  • filter (String, nil) (defaults to: nil) — An advanced logs filter 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 Stackdriver Logging.
  • unique_writer_identity (Boolean) (defaults to: nil) — Whether the sink will have a dedicated service account returned in the sink's writer_identity. Set this field to be true to export logs from one project to a different project. This field is ignored for non-project sinks (e.g. organization sinks) because those sinks are required to have dedicated service accounts. Optional.
Returns
Example
require "google/cloud/storage"

storage = Google::Cloud::Storage.new

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

# Grant owner permission to Stackdriver Logging service
email = "cloud-logs@google.com"
bucket.acl.add_owner "group-#{email}"

require "google/cloud/logging"

logging = Google::Cloud::Logging.new

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

#delete_log

def delete_log(name) -> Boolean

Deletes a log and all its log entries. The log will reappear if it receives new entries.

Parameter
  • name (String) — The name of the log, which may be the full path including the project ID (projects/<project-id>/logs/<log-id>), or just the short name (<log-id>), in which case the beginning of the path will be automatically prepended, using the ID of the current project.
Returns
  • (Boolean) — Returns true if the log and all its log entries were deleted.
Example
require "google/cloud/logging"

logging = Google::Cloud::Logging.new
logging.delete_log "my_app_log"

#entries

def entries(resources: nil, filter: nil, order: nil, token: nil, max: nil, projects: nil) -> Array<Google::Cloud::Logging::Entry>
Aliases

Lists log entries. Use this method to retrieve log entries from Cloud Logging.

Parameters
  • resources (String, Array<String>) (defaults to: nil) — One or more cloud resources from which to retrieve log entries. If both resources and projects are nil, the ID of the receiving project instance will be used. Examples: "projects/my-project-1A", "projects/1234567890".
  • filter (String) (defaults to: nil) — An advanced logs filter. The filter is compared against all log entries in the projects specified by projects. Only entries that match the filter are retrieved. An empty filter matches all log entries.
  • order (String) (defaults to: nil) — How the results should be sorted. Presently, the only permitted values are "timestamp" (default) and "timestamp desc".
  • token (String) (defaults to: nil) — A previously-returned page token representing part of the larger set of results to view.
  • max (Integer) (defaults to: nil) — Maximum number of entries to return.
  • projects (String, Array<String>) (defaults to: nil) — One or more project IDs or project numbers from which to retrieve log entries. Each value will be formatted as a project resource name and added to any values passed to resources. If both resources and projects are nil, the ID of the receiving project instance will be used. This is deprecated in favor of resources.
Returns
Examples
require "google/cloud/logging"

logging = Google::Cloud::Logging.new
entries = logging.entries
entries.each do |e|
  puts "[#{e.timestamp}] #{e.log_name} #{e.payload.inspect}"
end

You can use a filter to narrow results to a single log.

require "google/cloud/logging"

logging = Google::Cloud::Logging.new
entries = logging.entries filter: "logName:syslog"
entries.each do |e|
  puts "[#{e.timestamp}] #{e.payload.inspect}"
end

You can also order the results by timestamp.

require "google/cloud/logging"

logging = Google::Cloud::Logging.new
entries = logging.entries order: "timestamp desc"
entries.each do |e|
  puts "[#{e.timestamp}] #{e.log_name} #{e.payload.inspect}"
end

Retrieve all log entries: (See Entry::List#all)

require "google/cloud/logging"

logging = Google::Cloud::Logging.new
entries = logging.entries

entries.all do |e|
  puts "[#{e.timestamp}] #{e.log_name} #{e.payload.inspect}"
end

#entry

def entry(log_name: nil, resource: nil, timestamp: nil, severity: nil, insert_id: nil, labels: nil, payload: nil) -> Google::Cloud::Logging::Entry
Aliases

Creates an new Entry instance that may be populated and written to the Stackdriver Logging service. The Entry#resource attribute is pre-populated with a new Resource instance. Equivalent to calling Google::Cloud::Logging::Entry.new.

Parameters
  • log_name (String) (defaults to: nil) — The resource name of the log to which this log entry belongs. See also Entry#log_name=.
  • resource (Resource) (defaults to: nil) — The monitored resource associated with this log entry. See also Entry#resource.
  • timestamp (Time) (defaults to: nil) — The time the event described by the log entry occurred. If omitted, Stackdriver Logging will use the time the log entry is written. See also Entry#timestamp.
  • severity (Symbol) (defaults to: nil) — The severity level of the log entry. The default value is DEFAULT. See also Entry#severity.
  • insert_id (String) (defaults to: nil) — A unique ID for the log entry. If you provide this field, the logging service considers other log entries in the same log with the same ID as duplicates which can be removed. If omitted, Stackdriver Logging will generate a unique ID for this log entry. See also Entry#insert_id.
  • labels (Hash{Symbol,String => String}) (defaults to: nil) — A hash of user-defined key:value pairs that provide additional information about the log entry. See also Entry#labels=.
  • payload (String, Hash) (defaults to: nil) — The log entry payload, represented as either a string, a hash (JSON), or a hash (protocol buffer). See also Entry#payload.
Returns
Examples
require "google/cloud/logging"

logging = Google::Cloud::Logging.new

entry = logging.entry severity: :INFO, payload: "Job started."

logging.write_entries entry

Provide a hash to write a JSON payload to the log:

require "google/cloud/logging"

logging = Google::Cloud::Logging.new

payload = { "stats" => { "a" => 8, "b" => 12.5} }
entry = logging.entry severity: :INFO, payload: payload

logging.write_entries entry

#find_entries

def find_entries(resources: nil, filter: nil, order: nil, token: nil, max: nil, projects: nil) -> Array<Google::Cloud::Logging::Entry>
Alias Of: #entries

Lists log entries. Use this method to retrieve log entries from Cloud Logging.

Parameters
  • resources (String, Array<String>) (defaults to: nil) — One or more cloud resources from which to retrieve log entries. If both resources and projects are nil, the ID of the receiving project instance will be used. Examples: "projects/my-project-1A", "projects/1234567890".
  • filter (String) (defaults to: nil) — An advanced logs filter. The filter is compared against all log entries in the projects specified by projects. Only entries that match the filter are retrieved. An empty filter matches all log entries.
  • order (String) (defaults to: nil) — How the results should be sorted. Presently, the only permitted values are "timestamp" (default) and "timestamp desc".
  • token (String) (defaults to: nil) — A previously-returned page token representing part of the larger set of results to view.
  • max (Integer) (defaults to: nil) — Maximum number of entries to return.
  • projects (String, Array<String>) (defaults to: nil) — One or more project IDs or project numbers from which to retrieve log entries. Each value will be formatted as a project resource name and added to any values passed to resources. If both resources and projects are nil, the ID of the receiving project instance will be used. This is deprecated in favor of resources.
Returns
Examples
require "google/cloud/logging"

logging = Google::Cloud::Logging.new
entries = logging.entries
entries.each do |e|
  puts "[#{e.timestamp}] #{e.log_name} #{e.payload.inspect}"
end

You can use a filter to narrow results to a single log.

require "google/cloud/logging"

logging = Google::Cloud::Logging.new
entries = logging.entries filter: "logName:syslog"
entries.each do |e|
  puts "[#{e.timestamp}] #{e.payload.inspect}"
end

You can also order the results by timestamp.

require "google/cloud/logging"

logging = Google::Cloud::Logging.new
entries = logging.entries order: "timestamp desc"
entries.each do |e|
  puts "[#{e.timestamp}] #{e.log_name} #{e.payload.inspect}"
end

Retrieve all log entries: (See Entry::List#all)

require "google/cloud/logging"

logging = Google::Cloud::Logging.new
entries = logging.entries

entries.all do |e|
  puts "[#{e.timestamp}] #{e.log_name} #{e.payload.inspect}"
end

#find_log_names

def find_log_names(resource: nil, token: nil, max: nil) -> Array<String>
Alias Of: #logs

Lists log names. Use this method to retrieve log names from Cloud Logging.

Parameters
  • resource (String) (defaults to: nil) — The cloud resource from which to retrieve log names. Optional. If nil, the ID of the receiving project instance will be used. Examples: "projects/my-project-1A", "projects/1234567890".
  • token (String) (defaults to: nil) — A previously-returned page token representing part of the larger set of results to view.
  • max (Integer) (defaults to: nil) — Maximum number of log names to return.
Returns
  • (Array<String>) — A list of log names. For example, projects/my-project/syslog or organizations/123/cloudresourcemanager.googleapis.com%2Factivity. (See Log::List)
Examples
require "google/cloud/logging"

logging = Google::Cloud::Logging.new
logs = logging.logs
logs.each { |l| puts l }

Retrieve all log names: (See Log::List#all)

require "google/cloud/logging"

logging = Google::Cloud::Logging.new
logs = logging.logs

logs.all { |l| puts l }

#find_logs

def find_logs(resource: nil, token: nil, max: nil) -> Array<String>
Alias Of: #logs

Lists log names. Use this method to retrieve log names from Cloud Logging.

Parameters
  • resource (String) (defaults to: nil) — The cloud resource from which to retrieve log names. Optional. If nil, the ID of the receiving project instance will be used. Examples: "projects/my-project-1A", "projects/1234567890".
  • token (String) (defaults to: nil) — A previously-returned page token representing part of the larger set of results to view.
  • max (Integer) (defaults to: nil) — Maximum number of log names to return.
Returns
  • (Array<String>) — A list of log names. For example, projects/my-project/syslog or organizations/123/cloudresourcemanager.googleapis.com%2Factivity. (See Log::List)
Examples
require "google/cloud/logging"

logging = Google::Cloud::Logging.new
logs = logging.logs
logs.each { |l| puts l }

Retrieve all log names: (See Log::List#all)

require "google/cloud/logging"

logging = Google::Cloud::Logging.new
logs = logging.logs

logs.all { |l| puts l }

#find_metric

def find_metric(name) -> Google::Cloud::Logging::Metric, nil
Alias Of: #metric

Retrieves metric by name.

Parameter
  • name (String) — Name of a metric.
Returns
Examples
require "google/cloud/logging"

logging = Google::Cloud::Logging.new
metric = logging.metric "existing_metric"

By default nil will be returned if metric does not exist.

require "google/cloud/logging"

logging = Google::Cloud::Logging.new
metric = logging.metric "non_existing_metric" # nil

#find_metrics

def find_metrics(token: nil, max: nil) -> Array<Google::Cloud::Logging::Metric>
Alias Of: #metrics

Retrieves the list of metrics belonging to the project.

Parameters
  • token (String) (defaults to: nil) — A previously-returned page token representing part of the larger set of results to view.
  • max (Integer) (defaults to: nil) — Maximum number of metrics to return.
Returns
Examples
require "google/cloud/logging"

logging = Google::Cloud::Logging.new
metrics = logging.metrics
metrics.each do |m|
  puts "#{m.name}: #{m.filter}"
end

Retrieve all metrics: (See Metric::List#all)

require "google/cloud/logging"

logging = Google::Cloud::Logging.new
metrics = logging.metrics

metrics.all do |m|
  puts "#{m.name}: #{m.filter}"
end

#find_resource_descriptors

def find_resource_descriptors(token: nil, max: nil) -> Array<Google::Cloud::Logging::ResourceDescriptor>

Retrieves the list of monitored resource descriptors that are used by Stackdriver Logging.

Parameters
  • token (String) (defaults to: nil) — A previously-returned page token representing part of the larger set of results to view.
  • max (Integer) (defaults to: nil) — Maximum number of resource descriptors to return.
Examples
require "google/cloud/logging"

logging = Google::Cloud::Logging.new
resource_descriptors = logging.resource_descriptors
resource_descriptors.each do |rd|
  label_keys = rd.labels.map(&:key).join(", ")
  puts "#{rd.type} (#{label_keys})"
end

Pagination:

require "google/cloud/logging"

logging = Google::Cloud::Logging.new
resource_descriptors = logging.resource_descriptors

resource_descriptors.all do |rd|
  puts rd.type
end

#find_sink

def find_sink(sink_name) -> Google::Cloud::Logging::Sink, nil
Alias Of: #sink

Retrieves a sink by name.

Parameter
  • sink_name (String) — Name of a sink.
Returns
Examples
require "google/cloud/logging"

logging = Google::Cloud::Logging.new
sink = logging.sink "existing-sink"

By default nil will be returned if the sink does not exist.

require "google/cloud/logging"

logging = Google::Cloud::Logging.new
sink = logging.sink "non-existing-sink" # nil

#find_sinks

def find_sinks(token: nil, max: nil) -> Array<Google::Cloud::Logging::Sink>
Alias Of: #sinks

Retrieves the list of sinks belonging to the project.

Parameters
  • token (String) (defaults to: nil) — A previously-returned page token representing part of the larger set of results to view.
  • max (Integer) (defaults to: nil) — Maximum number of sinks to return.
Returns
Examples
require "google/cloud/logging"

logging = Google::Cloud::Logging.new
sinks = logging.sinks
sinks.each do |s|
  puts "#{s.name}: #{s.filter} -> #{s.destination}"
end

Retrieve all sinks: (See Sink::List#all)

require "google/cloud/logging"

logging = Google::Cloud::Logging.new
sinks = logging.sinks

sinks.all do |s|
  puts "#{s.name}: #{s.filter} -> #{s.destination}"
end

#get_metric

def get_metric(name) -> Google::Cloud::Logging::Metric, nil
Alias Of: #metric

Retrieves metric by name.

Parameter
  • name (String) — Name of a metric.
Returns
Examples
require "google/cloud/logging"

logging = Google::Cloud::Logging.new
metric = logging.metric "existing_metric"

By default nil will be returned if metric does not exist.

require "google/cloud/logging"

logging = Google::Cloud::Logging.new
metric = logging.metric "non_existing_metric" # nil

#get_sink

def get_sink(sink_name) -> Google::Cloud::Logging::Sink, nil
Alias Of: #sink

Retrieves a sink by name.

Parameter
  • sink_name (String) — Name of a sink.
Returns
Examples
require "google/cloud/logging"

logging = Google::Cloud::Logging.new
sink = logging.sink "existing-sink"

By default nil will be returned if the sink does not exist.

require "google/cloud/logging"

logging = Google::Cloud::Logging.new
sink = logging.sink "non-existing-sink" # nil

#log_names

def log_names(resource: nil, token: nil, max: nil) -> Array<String>
Alias Of: #logs

Lists log names. Use this method to retrieve log names from Cloud Logging.

Parameters
  • resource (String) (defaults to: nil) — The cloud resource from which to retrieve log names. Optional. If nil, the ID of the receiving project instance will be used. Examples: "projects/my-project-1A", "projects/1234567890".
  • token (String) (defaults to: nil) — A previously-returned page token representing part of the larger set of results to view.
  • max (Integer) (defaults to: nil) — Maximum number of log names to return.
Returns
  • (Array<String>) — A list of log names. For example, projects/my-project/syslog or organizations/123/cloudresourcemanager.googleapis.com%2Factivity. (See Log::List)
Examples
require "google/cloud/logging"

logging = Google::Cloud::Logging.new
logs = logging.logs
logs.each { |l| puts l }

Retrieve all log names: (See Log::List#all)

require "google/cloud/logging"

logging = Google::Cloud::Logging.new
logs = logging.logs

logs.all { |l| puts l }

#logger

def logger(log_name, resource, labels = {}) -> Google::Cloud::Logging::Logger

Creates a logger instance that is API-compatible with Ruby's standard library Logger.

The logger will create a new AsyncWriter object to transmit log entries on a background thread.

Parameters
  • log_name (String) — A log resource name to be associated with the written log entries.
  • resource (Google::Cloud::Logging::Resource) — The monitored resource to be associated with written log entries.
  • labels (Hash) — A set of user-defined data to be associated with written log entries. Values can be strings or Procs which are functions of the request environment.
Returns
Examples
require "google/cloud/logging"

logging = Google::Cloud::Logging.new

resource = logging.resource "gae_app",
                            module_id: "1",
                            version_id: "20150925t173233"

logger = logging.logger "my_app_log", resource, env: :production
logger.info "Job started."

Provide a hash to write a JSON payload to the log:

require "google/cloud/logging"

logging = Google::Cloud::Logging.new

resource = logging.resource "gae_app",
                            module_id: "1",
                            version_id: "20150925t173233"

logger = logging.logger "my_app_log", resource, env: :production

payload = { "stats" => { "a" => 8, "b" => 12.5} }
logger.info payload

#logs

def logs(resource: nil, token: nil, max: nil) -> Array<String>

Lists log names. Use this method to retrieve log names from Cloud Logging.

Parameters
  • resource (String) (defaults to: nil) — The cloud resource from which to retrieve log names. Optional. If nil, the ID of the receiving project instance will be used. Examples: "projects/my-project-1A", "projects/1234567890".
  • token (String) (defaults to: nil) — A previously-returned page token representing part of the larger set of results to view.
  • max (Integer) (defaults to: nil) — Maximum number of log names to return.
Returns
  • (Array<String>) — A list of log names. For example, projects/my-project/syslog or organizations/123/cloudresourcemanager.googleapis.com%2Factivity. (See Log::List)
Examples
require "google/cloud/logging"

logging = Google::Cloud::Logging.new
logs = logging.logs
logs.each { |l| puts l }

Retrieve all log names: (See Log::List#all)

require "google/cloud/logging"

logging = Google::Cloud::Logging.new
logs = logging.logs

logs.all { |l| puts l }

#metric

def metric(name) -> Google::Cloud::Logging::Metric, nil

Retrieves metric by name.

Parameter
  • name (String) — Name of a metric.
Returns
Examples
require "google/cloud/logging"

logging = Google::Cloud::Logging.new
metric = logging.metric "existing_metric"

By default nil will be returned if metric does not exist.

require "google/cloud/logging"

logging = Google::Cloud::Logging.new
metric = logging.metric "non_existing_metric" # nil

#metrics

def metrics(token: nil, max: nil) -> Array<Google::Cloud::Logging::Metric>
Aliases

Retrieves the list of metrics belonging to the project.

Parameters
  • token (String) (defaults to: nil) — A previously-returned page token representing part of the larger set of results to view.
  • max (Integer) (defaults to: nil) — Maximum number of metrics to return.
Returns
Examples
require "google/cloud/logging"

logging = Google::Cloud::Logging.new
metrics = logging.metrics
metrics.each do |m|
  puts "#{m.name}: #{m.filter}"
end

Retrieve all metrics: (See Metric::List#all)

require "google/cloud/logging"

logging = Google::Cloud::Logging.new
metrics = logging.metrics

metrics.all do |m|
  puts "#{m.name}: #{m.filter}"
end

#new_entry

def new_entry(log_name: nil, resource: nil, timestamp: nil, severity: nil, insert_id: nil, labels: nil, payload: nil) -> Google::Cloud::Logging::Entry
Alias Of: #entry

Creates an new Entry instance that may be populated and written to the Stackdriver Logging service. The Entry#resource attribute is pre-populated with a new Resource instance. Equivalent to calling Google::Cloud::Logging::Entry.new.

Parameters
  • log_name (String) (defaults to: nil) — The resource name of the log to which this log entry belongs. See also Entry#log_name=.
  • resource (Resource) (defaults to: nil) — The monitored resource associated with this log entry. See also Entry#resource.
  • timestamp (Time) (defaults to: nil) — The time the event described by the log entry occurred. If omitted, Stackdriver Logging will use the time the log entry is written. See also Entry#timestamp.
  • severity (Symbol) (defaults to: nil) — The severity level of the log entry. The default value is DEFAULT. See also Entry#severity.
  • insert_id (String) (defaults to: nil) — A unique ID for the log entry. If you provide this field, the logging service considers other log entries in the same log with the same ID as duplicates which can be removed. If omitted, Stackdriver Logging will generate a unique ID for this log entry. See also Entry#insert_id.
  • labels (Hash{Symbol,String => String}) (defaults to: nil) — A hash of user-defined key:value pairs that provide additional information about the log entry. See also Entry#labels=.
  • payload (String, Hash) (defaults to: nil) — The log entry payload, represented as either a string, a hash (JSON), or a hash (protocol buffer). See also Entry#payload.
Returns
Examples
require "google/cloud/logging"

logging = Google::Cloud::Logging.new

entry = logging.entry severity: :INFO, payload: "Job started."

logging.write_entries entry

Provide a hash to write a JSON payload to the log:

require "google/cloud/logging"

logging = Google::Cloud::Logging.new

payload = { "stats" => { "a" => 8, "b" => 12.5} }
entry = logging.entry severity: :INFO, payload: payload

logging.write_entries entry

#new_metric

def new_metric(name, filter, description: nil) -> Google::Cloud::Logging::Metric
Alias Of: #create_metric

Creates a new logs-based metric for Google Cloud Monitoring.

Parameters
  • name (String) — The client-assigned metric identifier. Metric identifiers are limited to 1000 characters and can include only the following characters: A-Z, a-z, 0-9, and the special characters _-.,+!*',()%/\. The forward-slash character (/) denotes a hierarchy of name pieces, and it cannot be the first character of the name.
  • filter (String) — An advanced logs filter.
  • description (String, nil) (defaults to: nil) — A description of this metric, which is used in documentation.
Example
require "google/cloud/logging"

logging = Google::Cloud::Logging.new
metric = logging.create_metric "errors", "severity>=ERROR"

#new_resource

def new_resource(type, labels = {}) -> Google::Cloud::Logging::Resource
Alias Of: #resource

Creates a new monitored resource instance.

Parameters
  • type (String) — The type of resource, as represented by a ResourceDescriptor.
  • labels (Hash) — A set of labels that can be used to describe instances of this monitored resource type.
Example
require "google/cloud/logging"

logging = Google::Cloud::Logging.new

resource = logging.resource "gae_app",
                            "module_id" => "1",
                            "version_id" => "20150925t173233"

#new_sink

def create_sink(name, destination, filter: nil, unique_writer_identity: nil) -> Google::Cloud::Logging::Sink
Alias Of: #create_sink

Creates a new project sink. When you create a sink, only new log entries that match the sink's filter are exported. Stackdriver Logging does not send previously-ingested log entries to the sink's destination.

Before creating the sink, ensure that you have granted the sink's unique writer identity permission to write logs to the destination. See Destination permissions.

Overloads
def create_sink(name, destination, filter: nil, unique_writer_identity: nil) -> Google::Cloud::Logging::Sink
filter](https://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 Stackdriver Logging.
Parameters
  • name (String) — 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 _-..
  • destination (String) — The resource name of the export destination. See About sinks for examples.
  • filter (String, nil) (defaults to: nil) — An [advanced logs
  • unique_writer_identity (Boolean) (defaults to: nil) — Whether the sink will have a dedicated service account returned in the sink's writer_identity. Set this field to be true to export logs from one project to a different project. This field is ignored for non-project sinks (e.g. organization sinks) because those sinks are required to have dedicated service accounts. Optional.
Returns
Example
require "google/cloud/storage"

storage = Google::Cloud::Storage.new

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

# Grant owner permission to Stackdriver Logging service
email = "cloud-logs@google.com"
bucket.acl.add_owner "group-#{email}"

require "google/cloud/logging"

logging = Google::Cloud::Logging.new

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

#project

def project() -> String
Alias Of: #project_id

The ID of the current project.

Returns
  • (String) — the Google Cloud project ID
Example
require "google/cloud/logging"

logging = Google::Cloud::Logging.new(
  project_id: "my-project",
  credentials: "/path/to/keyfile.json"
)

logging.project_id #=> "my-project"

#project_id

def project_id() -> String
Aliases

The ID of the current project.

Returns
  • (String) — the Google Cloud project ID
Example
require "google/cloud/logging"

logging = Google::Cloud::Logging.new(
  project_id: "my-project",
  credentials: "/path/to/keyfile.json"
)

logging.project_id #=> "my-project"

#resource

def resource(type, labels = {}) -> Google::Cloud::Logging::Resource
Aliases

Creates a new monitored resource instance.

Parameters
  • type (String) — The type of resource, as represented by a ResourceDescriptor.
  • labels (Hash) — A set of labels that can be used to describe instances of this monitored resource type.
Example
require "google/cloud/logging"

logging = Google::Cloud::Logging.new

resource = logging.resource "gae_app",
                            "module_id" => "1",
                            "version_id" => "20150925t173233"

#resource_descriptors

def resource_descriptors(token: nil, max: nil) -> Array<Google::Cloud::Logging::ResourceDescriptor>

Retrieves the list of monitored resource descriptors that are used by Stackdriver Logging.

Parameters
  • token (String) (defaults to: nil) — A previously-returned page token representing part of the larger set of results to view.
  • max (Integer) (defaults to: nil) — Maximum number of resource descriptors to return.
Examples
require "google/cloud/logging"

logging = Google::Cloud::Logging.new
resource_descriptors = logging.resource_descriptors
resource_descriptors.each do |rd|
  label_keys = rd.labels.map(&:key).join(", ")
  puts "#{rd.type} (#{label_keys})"
end

Pagination:

require "google/cloud/logging"

logging = Google::Cloud::Logging.new
resource_descriptors = logging.resource_descriptors

resource_descriptors.all do |rd|
  puts rd.type
end

#shared_async_writer

def shared_async_writer()

Returns a shared AsyncWriter for this Project. If this method is called multiple times, it will return the same object.

Example
require "google/cloud/logging"

logging = Google::Cloud::Logging.new

async = logging.shared_async_writer

entry1 = logging.entry payload: "Job started."
entry2 = logging.entry payload: "Job completed."

labels = { job_size: "large", job_code: "red" }
resource = logging.resource "gae_app",
                            "module_id" => "1",
                            "version_id" => "20150925t173233"

async.write_entries [entry1, entry2],
                    log_name: "my_app_log",
                    resource: resource,
                    labels: labels

#sink

def sink(sink_name) -> Google::Cloud::Logging::Sink, nil

Retrieves a sink by name.

Parameter
  • sink_name (String) — Name of a sink.
Returns
Examples
require "google/cloud/logging"

logging = Google::Cloud::Logging.new
sink = logging.sink "existing-sink"

By default nil will be returned if the sink does not exist.

require "google/cloud/logging"

logging = Google::Cloud::Logging.new
sink = logging.sink "non-existing-sink" # nil

#sinks

def sinks(token: nil, max: nil) -> Array<Google::Cloud::Logging::Sink>
Aliases

Retrieves the list of sinks belonging to the project.

Parameters
  • token (String) (defaults to: nil) — A previously-returned page token representing part of the larger set of results to view.
  • max (Integer) (defaults to: nil) — Maximum number of sinks to return.
Returns
Examples
require "google/cloud/logging"

logging = Google::Cloud::Logging.new
sinks = logging.sinks
sinks.each do |s|
  puts "#{s.name}: #{s.filter} -> #{s.destination}"
end

Retrieve all sinks: (See Sink::List#all)

require "google/cloud/logging"

logging = Google::Cloud::Logging.new
sinks = logging.sinks

sinks.all do |s|
  puts "#{s.name}: #{s.filter} -> #{s.destination}"
end

#write_entries

def write_entries(entries, log_name: nil, resource: nil, labels: nil, partial_success: nil) -> Boolean

Writes log entries to the Stackdriver Logging service.

If you write a collection of log entries, you can provide the log name, resource, and/or labels hash to be used for all of the entries, and omit these values from the individual entries.

Parameters
  • entries (Google::Cloud::Logging::Entry, Array<Google::Cloud::Logging::Entry>) — One or more entry objects to write. The log entries must have values for all required fields.
  • log_name (String) (defaults to: nil) — A default log ID for those log entries in entries that do not specify their own log_name. See also Entry#log_name=.
  • resource (Resource) (defaults to: nil) — A default monitored resource for those log entries in entries that do not specify their own resource. See also Entry#resource.
  • labels (Hash{Symbol,String => String}) (defaults to: nil) — User-defined key:value items that are added to the labels field of each log entry in entries, except when a log entry specifies its own key:value item with the same key. See also Entry#labels=.
  • partial_success (Boolean) (defaults to: nil) — Whether valid entries should be written even if some other entries fail due to INVALID_ARGUMENT or PERMISSION_DENIED errors when communicating to the Stackdriver Logging API.
Returns
  • (Boolean) — Returns true if the entries were written.
Examples
require "google/cloud/logging"

logging = Google::Cloud::Logging.new

entry = logging.entry payload: "Job started.",
                      log_name: "my_app_log"
entry.resource.type = "gae_app"
entry.resource.labels[:module_id] = "1"
entry.resource.labels[:version_id] = "20150925t173233"

logging.write_entries entry

Provide a hash to write a JSON payload to the log:

require "google/cloud/logging"

logging = Google::Cloud::Logging.new

payload = { "stats" => { "a" => 8, "b" => 12.5} }

entry = logging.entry payload: payload,
                      log_name: "my_app_log"
entry.resource.type = "gae_app"
entry.resource.labels[:module_id] = "1"
entry.resource.labels[:version_id] = "20150925t173233"

logging.write_entries entry

Optionally pass log name, resource, and labels for entries.

require "google/cloud/logging"

logging = Google::Cloud::Logging.new

entry1 = logging.entry payload: "Job started."
entry2 = logging.entry payload: "Job completed."

labels = { job_size: "large", job_code: "red" }
resource = logging.resource "gae_app",
                            "module_id" => "1",
                            "version_id" => "20150925t173233"

logging.write_entries [entry1, entry2],
                      log_name: "my_app_log",
                      resource: resource,
                      labels: labels,
                      partial_success: true