google-cloud-logging 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/google/cloud/logging/middleware.rb +25 -3
- data/lib/google/cloud/logging/rails.rb +39 -20
- data/lib/google/cloud/logging/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4c12b20d76a762cc4d57a454cc8464d4e301f31a
|
4
|
+
data.tar.gz: 36cda33c662c40a95bafff6068adaad0b7c1df71
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1bb3bbec95098e11bb58fe87c41edbb93f8b8fb36dadfbe627434fdf7540e4f1dab64d79215d6da4e97b280fc15ac923cc686e53b3a3c6f7aba0f5a657095148
|
7
|
+
data.tar.gz: '059dfed7ab14d14903c65824489e968b001947e7b13be4671aa69b9719ab3c7e701c10d7cce1bed08c20c8b787d93af102c1eb583174c92ea8654b47b828155f'
|
@@ -19,6 +19,11 @@ module Google
|
|
19
19
|
module Cloud
|
20
20
|
module Logging
|
21
21
|
class Middleware
|
22
|
+
##
|
23
|
+
# The default log name used to instantiate the default logger if one
|
24
|
+
# isn't provided.
|
25
|
+
DEFAULT_LOG_NAME = "ruby_app_log"
|
26
|
+
|
22
27
|
##
|
23
28
|
# A default value for the log_name_map argument. Directs health check
|
24
29
|
# logs to a separate log name so they don't spam the main log.
|
@@ -35,7 +40,16 @@ module Google
|
|
35
40
|
# @param [Google::Cloud::Logging::Logger] logger A logger to be used by
|
36
41
|
# this middleware. The middleware will be interacting with the logger
|
37
42
|
# to track Stackdriver request trace ID. It also properly sets
|
38
|
-
# env["rack.logger"] to this assigned logger for accessing.
|
43
|
+
# env["rack.logger"] to this assigned logger for accessing. If not
|
44
|
+
# specified, a default logger with be used.
|
45
|
+
# @param [String] project_id Project identifier for the Stackdriver
|
46
|
+
# Logging service. Used to create a default logger if one isn't
|
47
|
+
# specified and a service account is used for authentication.
|
48
|
+
# Optional.
|
49
|
+
# @param [String, Hash] keyfile Keyfile downloaded from Google Cloud. If
|
50
|
+
# file path the file must be readable. Used to create a default logger
|
51
|
+
# if one isn't specified and a service account is used for
|
52
|
+
# authentication. Optional.
|
39
53
|
# @param [Hash] log_name_map A map from URI path to log name override.
|
40
54
|
# The path may be a string or regex. If a request path matches an
|
41
55
|
# entry in this map, the log name is set accordingly, otherwise the
|
@@ -44,9 +58,17 @@ module Google
|
|
44
58
|
# @return [Google::Cloud::Logging::Middleware] A new
|
45
59
|
# Google::Cloud::Logging::Middleware instance
|
46
60
|
#
|
47
|
-
def initialize app, logger: nil,
|
61
|
+
def initialize app, logger: nil, project_id: nil, keyfile: nil,
|
62
|
+
log_name_map: DEFAULT_LOG_NAME_MAP
|
48
63
|
@app = app
|
49
|
-
|
64
|
+
if logger
|
65
|
+
@logger = logger
|
66
|
+
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
|
71
|
+
end
|
50
72
|
@log_name_map = log_name_map
|
51
73
|
end
|
52
74
|
|
@@ -19,7 +19,7 @@ module Google
|
|
19
19
|
module Logging
|
20
20
|
##
|
21
21
|
# Default log name to be used for Stackdriver Logging
|
22
|
-
DEFAULT_LOG_NAME =
|
22
|
+
DEFAULT_LOG_NAME = Middleware::DEFAULT_LOG_NAME
|
23
23
|
|
24
24
|
##
|
25
25
|
# Railtie
|
@@ -65,20 +65,19 @@ module Google
|
|
65
65
|
|
66
66
|
initializer "Stackdriver.Logging", before: :initialize_logger do |app|
|
67
67
|
if self.class.use_logging? app.config
|
68
|
-
|
69
|
-
log_config = gcp_config.logging
|
68
|
+
logging_config = Railtie.parse_rails_config config
|
70
69
|
|
71
|
-
project_id =
|
72
|
-
keyfile =
|
73
|
-
resource_type =
|
74
|
-
resource_labels =
|
70
|
+
project_id = logging_config[:project_id]
|
71
|
+
keyfile = logging_config[:keyfile]
|
72
|
+
resource_type = logging_config[:resource_type]
|
73
|
+
resource_labels = logging_config[:resource_labels]
|
74
|
+
log_name = logging_config[:log_name]
|
75
75
|
|
76
76
|
logging = Google::Cloud::Logging.new project: project_id,
|
77
77
|
keyfile: keyfile
|
78
78
|
resource =
|
79
79
|
Logging::Middleware.build_monitored_resource resource_type,
|
80
80
|
resource_labels
|
81
|
-
log_name = log_config.log_name || DEFAULT_LOG_NAME
|
82
81
|
|
83
82
|
app.config.logger = logging.logger log_name, resource
|
84
83
|
app.middleware.insert_before Rails::Rack::Logger,
|
@@ -109,34 +108,54 @@ module Google
|
|
109
108
|
# @return [Boolean] Whether to use Stackdriver Logging
|
110
109
|
#
|
111
110
|
def self.use_logging? config
|
112
|
-
|
111
|
+
logging_config = Railtie.parse_rails_config config
|
112
|
+
|
113
113
|
# Return false if config.google_cloud.use_logging is explicitly false
|
114
|
-
|
115
|
-
|
114
|
+
use_logging = logging_config[:use_logging]
|
115
|
+
return false if use_logging == false
|
116
|
+
|
117
|
+
project_id = logging_config[:project_id] ||
|
118
|
+
Google::Cloud::Logging::Project.default_project
|
119
|
+
keyfile = logging_config[:keyfile]
|
116
120
|
|
117
121
|
# Try authenticate authorize client API. Return false if unable to
|
118
122
|
# authorize.
|
119
|
-
keyfile = gcp_config.logging.keyfile || gcp_config.keyfile
|
120
123
|
begin
|
121
124
|
Google::Cloud::Logging::Credentials.credentials_with_scope keyfile
|
122
125
|
rescue Exception => e
|
123
|
-
|
124
|
-
"
|
125
|
-
"logger"
|
126
|
+
STDOUT.puts "Note: Google::Cloud::Logging is disabled because " \
|
127
|
+
"it failed to authorize with the service. (#{e.message}) " \
|
128
|
+
"Falling back to the default Rails logger."
|
126
129
|
return false
|
127
130
|
end
|
128
131
|
|
129
|
-
project_id = gcp_config.logging.project_id || gcp_config.project_id ||
|
130
|
-
Google::Cloud::Logging::Project.default_project
|
131
132
|
if project_id.to_s.empty?
|
132
|
-
|
133
|
-
"
|
133
|
+
STDOUT.puts "Note: Google::Cloud::Logging is disabled because " \
|
134
|
+
"the project ID could not be determined. " \
|
135
|
+
"Falling back to the default Rails logger."
|
134
136
|
return false
|
135
137
|
end
|
136
138
|
|
137
139
|
# Otherwise default to true if Rails is running in production or
|
138
140
|
# config.google_cloud.use_logging is true
|
139
|
-
Rails.env.production? ||
|
141
|
+
Rails.env.production? || use_logging
|
142
|
+
end
|
143
|
+
|
144
|
+
##
|
145
|
+
# @private Helper method to parse rails config into a flattened hash
|
146
|
+
def self.parse_rails_config config
|
147
|
+
gcp_config = config.google_cloud
|
148
|
+
logging_config = gcp_config.logging
|
149
|
+
use_logging =
|
150
|
+
gcp_config.key?(:use_logging) ? gcp_config.use_logging : nil
|
151
|
+
{
|
152
|
+
project_id: logging_config.project_id || gcp_config.project_id,
|
153
|
+
keyfile: logging_config.keyfile || gcp_config.keyfile,
|
154
|
+
resource_type: logging_config.monitored_resource.type,
|
155
|
+
resource_labels: logging_config.monitored_resource.labels,
|
156
|
+
log_name: logging_config.log_name || Middleware::DEFAULT_LOG_NAME,
|
157
|
+
use_logging: use_logging
|
158
|
+
}
|
140
159
|
end
|
141
160
|
end
|
142
161
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: google-cloud-logging
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Moore
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-04-
|
12
|
+
date: 2017-04-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: google-cloud-core
|