@@ -50,6 +50,10 @@ class Middleware
5050 # file path the file must be readable. Used to create a default logger
5151 # if one isn't specified and a service account is used for
5252 # authentication. Optional.
53+ # @param [String] log_name The name of the log to use. Use default
54+ # log name if nil.
55+ # @param [String] resource_type The name of Logging Monitored Resource.
56+ # Defaults to
5357 # @param [Hash] log_name_map A map from URI path to log name override.
5458 # The path may be a string or regex. If a request path matches an
5559 # entry in this map, the log name is set accordingly, otherwise the
@@ -59,17 +63,26 @@ class Middleware
5963 # Google::Cloud::Logging::Middleware instance
6064 #
6165 def initialize app , logger : nil , project_id : nil , keyfile : nil ,
62- log_name_map : DEFAULT_LOG_NAME_MAP
66+ log_name : nil , log_name_map : DEFAULT_LOG_NAME_MAP ,
67+ resource_type : nil , resource_labels : nil
6368 @app = app
69+ @log_name_map = log_name_map
70+
71+ load_config project_id : project_id ,
72+ keyfile : keyfile ,
73+ log_name : log_name ,
74+ resource_type : resource_type ,
75+ resource_labels : resource_labels
76+
6477 if logger
6578 @logger = logger
6679 else
67- logging = Google ::Cloud ::Logging . new project : project_id ,
68- keyfile : keyfile
69- resource = Middleware . build_monitored_resource
70- @logger = logging . logger DEFAULT_LOG_NAME , resource
80+ logging = Google ::Cloud ::Logging . new project : @project_id ,
81+ keyfile : @keyfile
82+ resource = Middleware . build_monitored_resource @resource_type ,
83+ @resource_labels
84+ @logger = logging . logger @log_name , resource
7185 end
72- @log_name_map = log_name_map
7386 end
7487
7588 ##
@@ -249,6 +262,34 @@ def self.default_monitored_resource
249262 end
250263
251264 private_class_method :default_monitored_resource
265+
266+ private
267+
268+ ##
269+ # @private Sync Middleware configuration parameters from multiple
270+ # sources. The sources take precendence in the following order:
271+ # explicit parameters; Google::Cloud::Logging.configure;
272+ # Google::Cloud.configure; and finally the defaults.
273+ def load_config project_id : nil , keyfile : nil , log_name : nil ,
274+ resource_type : nil , resource_labels : nil
275+ gcloud_config = Google ::Cloud . configure
276+ logging_config = gcloud_config . logging
277+
278+ @project_id = project_id ||
279+ logging_config . project_id ||
280+ gcloud_config . project_id ||
281+ Logging ::Project . default_project
282+ @keyfile = keyfile || logging_config . keyfile || gcloud_config . keyfile
283+ @log_name = log_name || logging_config . log_name || DEFAULT_LOG_NAME
284+ @resource_type = resource_type || logging_config . resource_type
285+ @resource_labels = resource_labels || logging_config . resource_labels
286+
287+ logging_config . project_id = @project_id
288+ logging_config . keyfile = @keyfile
289+ logging_config . log_name = @log_name
290+ logging_config . resource_type = @resource_type
291+ logging_config . resource_labels = @resource_labels
292+ end
252293 end
253294 end
254295 end
0 commit comments