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.
- 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
orPERMISSION_DENIED
errors when communicating to the Stackdriver Logging API.
- (Google::Cloud::Logging::AsyncWriter) — an AsyncWriter object that buffers, batches, and transmits log entries efficiently.
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
Creates a new logs-based metric for Google Cloud Monitoring.
-
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.
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
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.
def create_sink(name, destination, filter: nil, unique_writer_identity: nil) -> Google::Cloud::Logging::Sink
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.
-
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.
- (Google::Cloud::Logging::Sink) — a project sink
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.
-
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.
-
(Boolean) — Returns
true
if the log and all its log entries were deleted.
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>
Lists log entries. Use this method to retrieve log entries from Cloud Logging.
-
resources (String, Array<String>) (defaults to: nil) — One or more cloud resources
from which to retrieve log entries. If both
resources
andprojects
arenil
, 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 bothresources
andprojects
arenil
, the ID of the receiving project instance will be used. This is deprecated in favor ofresources
.
- (Array<Google::Cloud::Logging::Entry>) — (See Entry::List)
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
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
.
- 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.
- (Google::Cloud::Logging::Entry) — a new Entry instance
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>
Lists log entries. Use this method to retrieve log entries from Cloud Logging.
-
resources (String, Array<String>) (defaults to: nil) — One or more cloud resources
from which to retrieve log entries. If both
resources
andprojects
arenil
, 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 bothresources
andprojects
arenil
, the ID of the receiving project instance will be used. This is deprecated in favor ofresources
.
- (Array<Google::Cloud::Logging::Entry>) — (See Entry::List)
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>
Lists log names. Use this method to retrieve log names from Cloud Logging.
-
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.
-
(Array<String>) — A list of log names. For example,
projects/my-project/syslog
ororganizations/123/cloudresourcemanager.googleapis.com%2Factivity
. (See Log::List)
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>
Lists log names. Use this method to retrieve log names from Cloud Logging.
-
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.
-
(Array<String>) — A list of log names. For example,
projects/my-project/syslog
ororganizations/123/cloudresourcemanager.googleapis.com%2Factivity
. (See Log::List)
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
Retrieves metric by name.
- name (String) — Name of a metric.
-
(Google::Cloud::Logging::Metric, nil) — Returns
nil
if metric does not exist.
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>
Retrieves the list of metrics belonging to the project.
- 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.
- (Array<Google::Cloud::Logging::Metric>) — (See Metric::List)
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.
- 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.
- (Array<Google::Cloud::Logging::ResourceDescriptor>) — (See ResourceDescriptor::List)
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
Retrieves a sink by name.
- sink_name (String) — Name of a sink.
-
(Google::Cloud::Logging::Sink, nil) — Returns
nil
if the sink does not exist.
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>
Retrieves the list of sinks belonging to the project.
- 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.
- (Array<Google::Cloud::Logging::Sink>) — (See Sink::List)
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
Retrieves metric by name.
- name (String) — Name of a metric.
-
(Google::Cloud::Logging::Metric, nil) — Returns
nil
if metric does not exist.
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
Retrieves a sink by name.
- sink_name (String) — Name of a sink.
-
(Google::Cloud::Logging::Sink, nil) — Returns
nil
if the sink does not exist.
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>
Lists log names. Use this method to retrieve log names from Cloud Logging.
-
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.
-
(Array<String>) — A list of log names. For example,
projects/my-project/syslog
ororganizations/123/cloudresourcemanager.googleapis.com%2Factivity
. (See Log::List)
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.
- 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.
- (Google::Cloud::Logging::Logger) — a Logger object that can be used in place of a ruby standard library logger object.
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.
-
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.
-
(Array<String>) — A list of log names. For example,
projects/my-project/syslog
ororganizations/123/cloudresourcemanager.googleapis.com%2Factivity
. (See Log::List)
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.
- name (String) — Name of a metric.
-
(Google::Cloud::Logging::Metric, nil) — Returns
nil
if metric does not exist.
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>
Retrieves the list of metrics belonging to the project.
- 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.
- (Array<Google::Cloud::Logging::Metric>) — (See Metric::List)
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
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
.
- 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.
- (Google::Cloud::Logging::Entry) — a new Entry instance
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
Creates a new logs-based metric for Google Cloud Monitoring.
-
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.
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
Creates a new monitored resource instance.
- 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.
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
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.
def create_sink(name, destination, filter: nil, unique_writer_identity: nil) -> Google::Cloud::Logging::Sink
version
parameter, regardless of the format of the log entry that was
originally written to Stackdriver Logging.
-
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.
- (Google::Cloud::Logging::Sink) — a project sink
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
The ID of the current project.
- (String) — the Google Cloud project ID
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
The ID of the current project.
- (String) — the Google Cloud project ID
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
Creates a new monitored resource instance.
- 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.
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.
- 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.
- (Array<Google::Cloud::Logging::ResourceDescriptor>) — (See ResourceDescriptor::List)
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.
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.
- sink_name (String) — Name of a sink.
-
(Google::Cloud::Logging::Sink, nil) — Returns
nil
if the sink does not exist.
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>
Retrieves the list of sinks belonging to the project.
- 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.
- (Array<Google::Cloud::Logging::Sink>) — (See Sink::List)
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.
- 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 ownlog_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 thelabels
field of each log entry inentries
, except when a log entry specifies its ownkey: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
orPERMISSION_DENIED
errors when communicating to the Stackdriver Logging API.
-
(Boolean) — Returns
true
if the entries were written.
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