Class: Google::Cloud::Logging::Middleware
- Inherits:
-
Object
- Object
- Google::Cloud::Logging::Middleware
- Defined in:
- lib/google/cloud/logging/middleware.rb
Constant Summary collapse
- DEFAULT_LOG_NAME_MAP =
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.
{ "/_ah/health" => "ruby_health_check_log" }
Instance Attribute Summary collapse
-
#logger ⇒ Object
readonly
The Google::Cloud::Logging::Logger instance.
Class Method Summary collapse
-
.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.
Instance Method Summary collapse
-
#call(env) ⇒ Rack::Response
Rack middleware entry point.
-
#initialize(app, logger: nil, log_name_map: DEFAULT_LOG_NAME_MAP) ⇒ Google::Cloud::Logging::Middleware
constructor
Create a new AppEngine logging Middleware.
Constructor Details
#initialize(app, logger: nil, log_name_map: DEFAULT_LOG_NAME_MAP) ⇒ Google::Cloud::Logging::Middleware
Create a new AppEngine logging Middleware.
47 48 49 50 51 |
# File 'lib/google/cloud/logging/middleware.rb', line 47 def initialize app, logger: nil, log_name_map: DEFAULT_LOG_NAME_MAP @app = app @logger = logger @log_name_map = log_name_map end |
Instance Attribute Details
#logger ⇒ Object (readonly)
The Google::Cloud::Logging::Logger instance
29 30 31 |
# File 'lib/google/cloud/logging/middleware.rb', line 29 def logger @logger end |
Class Method Details
.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.
Reference https://cloud.google.com/logging/docs/api/ref_v2beta1/rest/v2beta1/MonitoredResource for a full list of monitoring resources
154 155 156 157 158 159 160 161 162 163 |
# File 'lib/google/cloud/logging/middleware.rb', line 154 def self.build_monitored_resource type = nil, labels = nil if type && labels Google::Cloud::Logging::Resource.new.tap do |r| r.type = type r.labels = labels end else default_monitored_resource end end |
Instance Method Details
#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.
64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/google/cloud/logging/middleware.rb', line 64 def call env env["rack.logger"] = logger trace_id = get_trace_id env log_name = get_log_name env logger.add_request_info trace_id: trace_id, log_name: log_name begin @app.call env ensure logger.delete_request_info end end |