module Google::Cloud::Logging
# Stackdriver Logging
The Stackdriver Logging
service collects and stores logs from applications and services on the Google
Cloud
Platform, giving you fine-grained, programmatic control over your projects' logs. You can use the Stackdriver Logging
API to:
-
Read and filter log entries
-
Export your log entries to
Cloud
Storage, BigQuery, orCloud
Pub/Sub -
Create logs-based metrics for use in
Cloud
Monitoring -
Write log entries
For general information about Stackdriver Logging
, read [Stackdriver Logging
Documentation](cloud.google.com/logging/docs/).
See {file:OVERVIEW.md Stackdriver Logging
Overview}.
Constants
- DEFAULT_LOG_NAME
Default log name to be used for Stackdriver
Logging
- VERSION
Public Class Methods
Configure the Google::Cloud::Logging::Middleware
when used in a Rack-based application.
The following Stackdriver Logging
configuration parameters are supported:
-
`project_id` - (String)
Project
identifier for the StackdriverLogging
service you are connecting to. (The parameter `project` is considered deprecated, but may also be used.) -
`credentials` - (String, Hash, Google::Auth::Credentials) The path to the keyfile as a String, the contents of the keyfile as a Hash, or a Google::Auth::Credentials object. (See {Logging::Credentials}) (The parameter `keyfile` is considered deprecated, but may also be used.)
-
`scope` - (String, Array<String>) The OAuth 2.0 scopes controlling the set of resources and operations that the connection can access.
-
`quota_project` - (String) The project ID for a project that can be used by client libraries for quota and billing purposes.
-
`timeout` - (Integer) Default timeout to use in requests.
-
`endpoint` - (String) Override of the endpoint host name, or `nil` to use the default endpoint.
-
`log_name` - (String) Name of the application log file. Default: `“ruby_app_log”`
-
`log_name_map` - (Hash) Map specific request routes to other log. Default: `{ “/_ah/health” => “ruby_health_check_log” }`
-
`monitored_resource.type` (String)
Resource
type name. See [full list](cloud.google.com/logging/docs/api/v2/resource-list). Self discovered on GCP. -
`monitored_resource.labels` -(Hash)
Resource
labels. See [full list](cloud.google.com/logging/docs/api/v2/resource-list). Self discovered on GCP. -
`labels` - (Hash) User defined labels. A `Hash` of label names to string label values or callables/`Proc` which are functions of the Rack environment.
-
`set_default_logger_on_rails_init` - (Boolean) Whether
Google
Cloud
Logging
Logger
should be allowed to start background threads and open gRPC connections during Rails initialization. This should only be used with a non-forking web server. Web servers such as Puma and Unicorn should not set this, and instead set the Rails logger to aGoogle
Cloud
Logging
Logger
object on the worker process by calling {Railtie.set_default_logger} at the appropriate time, such as a post-fork hook. -
`on_error` - (Proc) A Proc to be run when an error is encountered on a background thread. The Proc must take the error object as the single argument. (See {AsyncWriter.on_error}.)
See the [Configuration Guide](googleapis.dev/ruby/stackdriver/latest/file.INSTRUMENTATION_CONFIGURATION.html) for full configuration parameters.
@return [Google::Cloud::Config] The configuration object
the Google::Cloud::Logging module uses.
# File lib/google/cloud/logging.rb, line 164 def self.configure yield Google::Cloud.configure.logging if block_given? Google::Cloud.configure.logging end
@private Default credentials.
# File lib/google/cloud/logging.rb, line 180 def self.default_credentials scope: nil Google::Cloud.configure.logging.credentials || Google::Cloud.configure.credentials || Logging::Credentials.default(scope: scope) end
@private Default project.
# File lib/google/cloud/logging.rb, line 172 def self.default_project_id Google::Cloud.configure.logging.project_id || Google::Cloud.configure.project_id || Google::Cloud.env.project_id end
Creates a new object for connecting to the Stackdriver Logging
service. Each call creates a new connection.
For more information on connecting to Google
Cloud
see the {file:AUTHENTICATION.md Authentication Guide}.
@param [String] project_id Project
identifier for the Stackdriver
Logging service you are connecting to. If not present, the default project for the credentials is used.
@param [String, Hash, Google::Auth::Credentials] credentials The path to
the keyfile as a String, the contents of the keyfile as a Hash, or a Google::Auth::Credentials object. (See {Logging::Credentials})
@param [String, Array<String>] scope The OAuth 2.0 scopes controlling
the set of resources and operations that the connection can access. See [Using OAuth 2.0 to Access Google APIs](https://developers.google.com/identity/protocols/OAuth2). The default scope is: * `https://www.googleapis.com/auth/logging.admin`
@param [Integer] timeout Default timeout to use in requests. Optional. @param [String] endpoint Override of the endpoint host name. Optional.
If the param is nil, uses the default endpoint.
@param [String] project Alias for the `project_id` argument. Deprecated. @param [String] keyfile Alias for the `credentials` argument.
Deprecated.
@return [Google::Cloud::Logging::Project]
@example
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
# File lib/google/cloud/logging.rb, line 84 def self.new project_id: nil, credentials: nil, scope: nil, timeout: nil, endpoint: nil, project: nil, keyfile: nil project_id ||= (project || default_project_id) scope ||= configure.scope timeout ||= configure.timeout endpoint ||= configure.endpoint credentials ||= (keyfile || default_credentials(scope: scope)) unless credentials.is_a? Google::Auth::Credentials credentials = Logging::Credentials.new credentials, scope: scope end if credentials.respond_to? :project_id project_id ||= credentials.project_id end project_id = project_id.to_s # Always cast to a string raise ArgumentError, "project_id is missing" if project_id.empty? service = Logging::Service.new project_id, credentials, host: endpoint, timeout: timeout Logging::Project.new service end