Reference documentation and code samples for the google-cloud-logging class Google::Cloud::Logging::Middleware.
Inherits
- Object
Methods
.build_monitored_resource
def self.build_monitored_resource(type = nil, labels = nil) -> Google::Cloud::Logging::Resource
Construct a monitored resource based on the given type and label if both are provided. Otherwise, construct a default monitored resource based on the current environment.
- type (String) — Type of Google::Cloud::Logging::Resource
- labels (Hash<String, String>) — Metadata lebels of Google::Cloud::Logging::Resource
- (Google::Cloud::Logging::Resource) — An Resource object with type and labels
If both type and labels are provided, it returns resource:
rc = Google::Cloud::Logging::Middleware.build_monitored_resource( "aws_ec2_instance", { instance_id: "ec2-id", aws_account: "aws-id" } ) rc.type #=> "aws_ec2_instance" rc.labels #=> { instance_id: "ec2-id", aws_account: "aws-id" }
If running from GAE, returns default resource:
rc = Google::Cloud::Logging::Middleware.build_monitored_resource rc.type #=> "gae_app" rc.labels # { module_id: [GAE module name], # version_id: [GAE module version] }
If running from GKE, returns default resource:
rc = Google::Cloud::Logging::Middleware.build_monitored_resource rc.type #=> "container" rc.labels # { cluster_name: [GKE cluster name], # namespace_id: [GKE namespace_id] }
If running from GCE, return default resource:
rc = Google::Cloud::Logging::Middleware.build_monitored_resource rc.type #=> "gce_instance" rc.labels # { instance_id: [GCE VM instance id], # zone: [GCE vm group zone] }
Otherwise default to generic "global" type:
rc = Google::Cloud::Logging::Middleware.build_monitored_resource rc.type #=> "global" rc.labels #=> {}
#call
def call(env) -> Rack::Response
Rack middleware entry point. In most Rack based frameworks, a request is served by one thread. So entry point, we associate the GCP request trace_id with the current thread's object_id in logger. All the logs written by logger beyond this point will carry this request's trace_id. Untrack the trace_id with this thread upon exiting.
- env (Hash) — Rack environment hash
- (Rack::Response) — The response from downstream Rack app
#initialize
def initialize(app, logger: nil, on_init: nil, **kwargs) -> Google::Cloud::Logging::Middleware
Create a new AppEngine logging Middleware.
- app (Rack Application) — Rack application
- logger (Google::Cloud::Logging::Logger) (defaults to: nil) — A logger to be used by this middleware. The middleware will be interacting with the logger to track Stackdriver request trace ID. It also properly sets env["rack.logger"] to this assigned logger for accessing. If not specified, a default logger with be used.
- on_init (Proc) (defaults to: nil) — A callback to be invoked when the middleware is initialized. The callback takes no arguments. Optional.
- kwargs (Hash) — Hash of configuration settings. Used for backward API compatibility. See the Configuration Guide for the prefered way to set configuration parameters.
- (Google::Cloud::Logging::Middleware) — A new Google::Cloud::Logging::Middleware instance
#logger
def logger()
The Google::Cloud::Logging::Logger instance
Constants
DEFAULT_LOG_NAME
value: "ruby_app_log".freeze
The default log name used to instantiate the default logger if one
isn't provided.
DEFAULT_LOG_NAME_MAP
value: { "/_ah/health" => "ruby_health_check_log",
"/healthz" => "ruby_health_check_log" }.freeze
A default value for the log_name_map argument. Directs health check
logs to a separate log name so they don't spam the main log.