google-cloud-error_reporting 0.24.0 → 0.25.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +87 -60
- data/lib/google-cloud-error_reporting.rb +93 -5
- data/lib/google/cloud/error_reporting.rb +238 -0
- data/lib/google/cloud/error_reporting/credentials.rb +41 -0
- data/lib/google/cloud/error_reporting/error_event.rb +313 -0
- data/lib/google/cloud/error_reporting/middleware.rb +84 -183
- data/lib/google/cloud/error_reporting/project.rb +224 -0
- data/lib/google/cloud/error_reporting/rails.rb +97 -127
- data/lib/google/cloud/error_reporting/service.rb +118 -0
- data/lib/google/cloud/error_reporting/version.rb +22 -0
- metadata +61 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2f57b6c70aad426eb8b82902378418d095dcb7df
|
4
|
+
data.tar.gz: 68844ca432aa4fea4ccf1846928ba9ede67b175c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1fc21b526bdb71e683f6a17d8eea04ff90f19d5f16b4344de4ff9ad1e039ad0a0db5a45a7e5b2370d6ddc36a210d682f166e120bb2e0b6367fb35a91b5c600c5
|
7
|
+
data.tar.gz: 9d7b384e32d1c9b25b61305cd00d3c594db0d625ee94eeff1791c703bf3d023569a5844c3df5eaf59809d1948b358e9323cea9e0e40fdf9f8479aee7a0a9e800
|
data/README.md
CHANGED
@@ -1,82 +1,109 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
1
|
+
# google-cloud-error_reporting
|
2
|
+
|
3
|
+
[Stackdriver Error Reporting](https://cloud.google.com/error-reporting/) counts,
|
4
|
+
analyzes and aggregates errors raised in your running cloud services. A
|
5
|
+
centralized error management interface displays the results with sorting
|
6
|
+
and filtering capabilities. A dedicated view shows the error details: time
|
7
|
+
chart, occurrences, affected user count, first and last seen dates and a
|
8
|
+
cleaned exception stack trace. Opt-in to receive email and mobile alerts on
|
9
|
+
new errors.
|
10
|
+
|
11
|
+
- [google-cloud-error_reporting API documentation](http://googlecloudplatform.github.io/google-cloud-ruby/#/docs/google-cloud-error_reporting/latest)
|
12
|
+
- [google-cloud-error_reporting instrumentation documentation](https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/google-cloud-error_reporting/guides/instrumentation)
|
13
|
+
- [google-cloud-error_reporting on RubyGems](https://rubygems.org/gems/google-cloud-error_reporting)
|
14
|
+
- [Stackdriver ErrorReporting documentation](https://cloud.google.com/error-reporting/docs/)
|
15
|
+
|
16
|
+
google-cloud-error_reporting provides an instrumentation API that makes it easy
|
17
|
+
to report exceptions to the Stackdriver Error Reporting service. It also
|
18
|
+
contains a full API client library for the
|
19
|
+
[Stackdriver Error Reporting API](https://developers.google.com/apis-explorer/#p/clouderrorreporting/v1beta1/)
|
20
|
+
(v1beta1).
|
21
|
+
|
22
|
+
## Quick Start
|
23
|
+
```sh
|
24
|
+
$ gem install google-cloud-error_reporting
|
25
|
+
```
|
11
26
|
|
12
|
-
|
13
|
-
---------------
|
27
|
+
## Authentication
|
14
28
|
|
15
|
-
|
29
|
+
The Instrumentation client and API use Service Account credentials to connect
|
30
|
+
to Google Cloud services. When running on Google Cloud Platform environments,
|
31
|
+
the credentials will be discovered automatically. When running on other
|
32
|
+
environments the Service Account credentials can be specified by providing the
|
33
|
+
path to the JSON file, or the JSON itself, in environment variables or
|
34
|
+
configuration code.
|
16
35
|
|
17
|
-
|
36
|
+
Instructions and configuration options are covered in the
|
37
|
+
[Authentication Guide](https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/google-cloud-error_reporting/guides/authentication).
|
18
38
|
|
39
|
+
## Instrumentation Example
|
40
|
+
```ruby
|
41
|
+
require "google/cloud/error_reporting"
|
42
|
+
|
43
|
+
# Configure Stackdriver ErrorReporting instrumentation
|
44
|
+
Google::Cloud::ErrorReporting.configure do |config|
|
45
|
+
config.project_id = "my-project"
|
46
|
+
config.keyfile = "/path/to/keyfile.json"
|
47
|
+
end
|
48
|
+
|
49
|
+
# Insert a Rack Middleware to report unhanded exceptions
|
50
|
+
use Google::Cloud::ErrorReporting::Middleware
|
51
|
+
|
52
|
+
# Or explicitly submit exceptions
|
53
|
+
begin
|
54
|
+
fail "Boom!"
|
55
|
+
rescue => exception
|
56
|
+
Google::Cloud::ErrorReporting.report exception
|
57
|
+
end
|
58
|
+
```
|
19
59
|
|
20
|
-
|
21
|
-
--------------------
|
60
|
+
## Rails and Rack Integration
|
22
61
|
|
23
|
-
|
24
|
-
|
62
|
+
This library also provides a built-in Railtie for Ruby on Rails integration. To
|
63
|
+
do this, simply add this line to config/application.rb:
|
64
|
+
```ruby
|
65
|
+
require "google/cloud/error_reporting/rails"
|
66
|
+
```
|
25
67
|
|
26
|
-
|
68
|
+
Alternatively, check out the [stackdriver](../stackdriver) gem, which includes
|
69
|
+
this library and enables the Railtie by default.
|
27
70
|
|
28
|
-
|
71
|
+
For Rack integration and more examples, see the
|
72
|
+
[Instrumentation Guide](https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/google-cloud-error_reporting/guides/instrumentation).
|
29
73
|
|
30
|
-
|
74
|
+
## Supported Ruby Versions
|
31
75
|
|
32
|
-
|
76
|
+
This library is supported on Ruby 2.0+.
|
33
77
|
|
34
|
-
|
35
|
-
[gcloud beta auth application-default login]: https://cloud.google.com/sdk/gcloud/reference/beta/auth/application-default/login
|
78
|
+
## Versioning
|
36
79
|
|
80
|
+
This library follows [Semantic Versioning](http://semver.org/).
|
37
81
|
|
38
|
-
|
39
|
-
|
82
|
+
It is currently in major version zero (0.y.z), which means that anything may
|
83
|
+
change at any time and the public API should not be considered stable.
|
40
84
|
|
41
|
-
|
85
|
+
## Contributing
|
42
86
|
|
43
|
-
|
44
|
-
|
87
|
+
Contributions to this library are always welcome and highly encouraged.
|
45
88
|
|
46
|
-
|
47
|
-
|
89
|
+
See the
|
90
|
+
[Contributing Guide](https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/guides/contributing)
|
91
|
+
for more information on how to get started.
|
48
92
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
```
|
53
|
-
Then the library can be configured through this set of Rails parameters in config/environments/*.rb:
|
54
|
-
```ruby
|
55
|
-
# Sharing authentication parameters
|
56
|
-
config.google_cloud.project_id = "gcp-project-id"
|
57
|
-
config.google_cloud.keyfile = "/path/to/gcp/secret.json"
|
58
|
-
# Or more specificly for ErrorReporting
|
59
|
-
config.google_cloud.error_reporting.project_id = "gcp-project-id"
|
60
|
-
config.google_cloud.error_reporting.keyfile = "/path/to/gcp/sercret.json"
|
61
|
-
|
62
|
-
# Explicitly enable or disable ErrorReporting
|
63
|
-
config.google_cloud.use_error_reporting = true
|
64
|
-
|
65
|
-
# Set Stackdriver Error Reporting service context
|
66
|
-
config.google_cloud.error_reporting.service_name = "my-app-name"
|
67
|
-
config.google_cloud.error_reporting.service_version = "my-app-version"
|
68
|
-
```
|
93
|
+
Please note that this project is released with a Contributor Code of Conduct. By
|
94
|
+
participating in this project you agree to abide by its terms. See
|
95
|
+
[Code of Conduct](../CODE_OF_CONDUCT.md) for more information.
|
69
96
|
|
70
|
-
|
97
|
+
## License
|
71
98
|
|
72
|
-
|
73
|
-
|
99
|
+
This library is licensed under Apache 2.0. Full license text is available in
|
100
|
+
[LICENSE](LICENSE).
|
74
101
|
|
75
|
-
|
76
|
-
```ruby
|
77
|
-
require "google/cloud/error_reporting/v1beta1"
|
102
|
+
## Support
|
78
103
|
|
79
|
-
|
80
|
-
|
104
|
+
Please
|
105
|
+
[report bugs at the project on Github](https://github.com/GoogleCloudPlatform/google-cloud-ruby/issues).
|
106
|
+
Don't hesitate to
|
107
|
+
[ask questions](http://stackoverflow.com/questions/tagged/google-cloud-platform+ruby)
|
108
|
+
about the client or APIs on [StackOverflow](http://stackoverflow.com).
|
81
109
|
|
82
|
-
At this point you are all set to continue.
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright
|
1
|
+
# Copyright 2017 Google Inc. All rights reserved.
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -13,12 +13,100 @@
|
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
15
|
##
|
16
|
-
# This file is here to be autorequired by bundler
|
17
|
-
# #logging methods can be available, but the library and all dependencies won't
|
18
|
-
# be loaded until required and used.
|
16
|
+
# This file is here to be autorequired by bundler
|
19
17
|
|
20
18
|
|
21
19
|
gem "google-cloud-core"
|
22
20
|
require "google/cloud"
|
23
21
|
|
24
|
-
|
22
|
+
module Google
|
23
|
+
module Cloud
|
24
|
+
##
|
25
|
+
# Create a new object for connecting to the Stackdriver Error Reporting
|
26
|
+
# service. Each call creates a new connection.
|
27
|
+
#
|
28
|
+
# For more information on connecting to Google Cloud see the [Authentication
|
29
|
+
# Guide](https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/guides/authentication)
|
30
|
+
#
|
31
|
+
# @param [String, Array<String>] scope The OAuth 2.0 scopes controlling the
|
32
|
+
# set of resources and operations that the connection can access. See
|
33
|
+
# [Using OAuth 2.0 to Access Google
|
34
|
+
# APIs](https://developers.google.com/identity/protocols/OAuth2).
|
35
|
+
#
|
36
|
+
# The default scope is:
|
37
|
+
#
|
38
|
+
# * `https://www.googleapis.com/auth/cloud-platform`
|
39
|
+
# @param [Integer] timeout Default timeout to use in requests. Optional.
|
40
|
+
# @param [Hash] client_config A hash of values to override the default
|
41
|
+
# behavior of the API client. Optional.
|
42
|
+
#
|
43
|
+
# @return [Google::Cloud::ErrorReporting::Project]
|
44
|
+
#
|
45
|
+
# @example
|
46
|
+
# require "google/cloud/error_reporting"
|
47
|
+
#
|
48
|
+
# gcloud = Google::Cloud.new "GCP_Project_ID",
|
49
|
+
# "/path/to/gcp/secretkey.json"
|
50
|
+
# error_reporting = gcloud.error_reporting
|
51
|
+
#
|
52
|
+
# error_event = error_reporting.error_event "Error with Backtrace",
|
53
|
+
# timestamp: Time.now,
|
54
|
+
# service_name: "my_app_name",
|
55
|
+
# service_version: "v8"
|
56
|
+
# error_reporting.report error_event
|
57
|
+
#
|
58
|
+
def error_reporting scope: nil, timeout: nil, client_config: nil
|
59
|
+
Google::Cloud.error_reporting @project, @keyfile,
|
60
|
+
scope: scope,
|
61
|
+
timeout: (timeout || @timeout),
|
62
|
+
client_config: client_config
|
63
|
+
end
|
64
|
+
|
65
|
+
|
66
|
+
##
|
67
|
+
# Create a new object for connecting to the Stackdriver Error Reporting
|
68
|
+
# service. Each call creates a new connection.
|
69
|
+
#
|
70
|
+
# For more information on connecting to Google Cloud see the [Authentication
|
71
|
+
# Guide](https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/guides/authentication)
|
72
|
+
#
|
73
|
+
# @param [String] project Google Cloud Platform project identifier for the
|
74
|
+
# Stackdriver Error Reporting service you are connecting to. Use
|
75
|
+
# Project.default_project if not provided.
|
76
|
+
# @param [String, Hash] keyfile Keyfile downloaded from Google Cloud. If
|
77
|
+
# file path the file must be readable.
|
78
|
+
# @param [String, Array<String>] scope The OAuth 2.0 scopes controlling the
|
79
|
+
# set of resources and operations that the connection can access. See
|
80
|
+
# [Using OAuth 2.0 to Access Google
|
81
|
+
# APIs](https://developers.google.com/identity/protocols/OAuth2).
|
82
|
+
#
|
83
|
+
# The default scope is:
|
84
|
+
#
|
85
|
+
# * `https://www.googleapis.com/auth/cloud-platform`
|
86
|
+
# @param [Integer] timeout Default timeout to use in requests. Optional.
|
87
|
+
# @param [Hash] client_config A hash of values to override the default
|
88
|
+
# behavior of the API client. Optional.
|
89
|
+
#
|
90
|
+
# @return [Google::Cloud::ErrorReporting::Project]
|
91
|
+
#
|
92
|
+
# @example
|
93
|
+
# require "google/cloud/error_reporting"
|
94
|
+
#
|
95
|
+
# gcloud = Google::Cloud.error_reporting "GCP_Project_ID",
|
96
|
+
# "/path/to/gcp/secretkey.json"
|
97
|
+
#
|
98
|
+
# error_event = error_reporting.error_event "Error with Backtrace",
|
99
|
+
# timestamp: Time.now,
|
100
|
+
# service_name: "my_app_name",
|
101
|
+
# service_version: "v8"
|
102
|
+
# error_reporting.report error_event
|
103
|
+
#
|
104
|
+
def self.error_reporting project = nil, keyfile = nil, scope: nil,
|
105
|
+
timeout: nil, client_config: nil
|
106
|
+
require "google/cloud/error_reporting"
|
107
|
+
Google::Cloud::ErrorReporting.new project: project, keyfile: keyfile,
|
108
|
+
scope: scope, timeout: timeout,
|
109
|
+
client_config: client_config
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
@@ -0,0 +1,238 @@
|
|
1
|
+
# Copyright 2017 Google Inc. All rights reserved.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
|
16
|
+
require "google-cloud-error_reporting"
|
17
|
+
require "google/cloud/error_reporting/project"
|
18
|
+
require "google/cloud/error_reporting/middleware"
|
19
|
+
require "stackdriver/core"
|
20
|
+
|
21
|
+
module Google
|
22
|
+
module Cloud
|
23
|
+
##
|
24
|
+
# # ErrorReporting
|
25
|
+
#
|
26
|
+
# Stackdriver Error Reporting counts, analyzes and aggregates the crashes in
|
27
|
+
# your running cloud services. The Stackdriver Error Reporting
|
28
|
+
# Instrumentation client provides
|
29
|
+
# [a simple way to report errors](#how-to-report-errors) from your
|
30
|
+
# application.
|
31
|
+
#
|
32
|
+
# For general information about Stackdriver Error Reporting, read
|
33
|
+
# [Stackdriver Error Reporting
|
34
|
+
# Documentation](https://cloud.google.com/error-reporting/docs/).
|
35
|
+
#
|
36
|
+
# The goal of google-cloud-ruby is to provide an API that is comfortable to
|
37
|
+
# Rubyists. Authentication is handled by the client. You can provide the
|
38
|
+
# project and credential information to connect to the Stackdriver Error
|
39
|
+
# Reporting service, or if you are running on Google Cloud Platform this
|
40
|
+
# configuration is taken care of for you. You can read more about the
|
41
|
+
# options for connecting in the [Authentication
|
42
|
+
# Guide](https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/guides/authentication).
|
43
|
+
#
|
44
|
+
# ## How to report errors
|
45
|
+
#
|
46
|
+
# You can easily report exceptions from your applications to Stackdriver
|
47
|
+
# Error Reporting service:
|
48
|
+
#
|
49
|
+
# ```ruby
|
50
|
+
# require "google/cloud/error_reporting"
|
51
|
+
#
|
52
|
+
# # Configure Stackdriver ErrorReporting instrumentation
|
53
|
+
# Google::Cloud::ErrorReporting.configure do |config|
|
54
|
+
# config.project_id = "my-project"
|
55
|
+
# config.keyfile = "/path/to/keyfile.json"
|
56
|
+
# end
|
57
|
+
#
|
58
|
+
# # Insert a Rack Middleware to report unhanded exceptions
|
59
|
+
# use Google::Cloud::ErrorReporting::Middleware
|
60
|
+
#
|
61
|
+
# # Or explicitly submit exceptions
|
62
|
+
# begin
|
63
|
+
# fail "Boom!"
|
64
|
+
# rescue => exception
|
65
|
+
# Google::Cloud::ErrorReporting.report exception
|
66
|
+
# end
|
67
|
+
# ```
|
68
|
+
#
|
69
|
+
# See the [Instrumentation
|
70
|
+
# Guide](https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/google-cloud-error_reporting/guides/instrumentation)
|
71
|
+
# for more examples.
|
72
|
+
#
|
73
|
+
module ErrorReporting
|
74
|
+
# Initialize :error_reporting as a nested Configuration under
|
75
|
+
# Google::Cloud if haven't already
|
76
|
+
unless Google::Cloud.configure.option? :error_reporting
|
77
|
+
Google::Cloud.configure.add_options :error_reporting
|
78
|
+
end
|
79
|
+
|
80
|
+
##
|
81
|
+
# @private The default Google::Cloud::ErrorReporting::Project client used
|
82
|
+
# for the Google::Cloud::ErrorReporting.report API.
|
83
|
+
@@default_client = nil
|
84
|
+
|
85
|
+
##
|
86
|
+
# Creates a new object for connecting to the Stackdriver Error Reporting
|
87
|
+
# service. Each call creates a new connection.
|
88
|
+
#
|
89
|
+
# For more information on connecting to Google Cloud see the
|
90
|
+
# [Authentication
|
91
|
+
# Guide](https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/guides/authentication).
|
92
|
+
#
|
93
|
+
# @param [String] project Project identifier for the Stackdriver Error
|
94
|
+
# Reporting service.
|
95
|
+
# @param [String, Hash] keyfile Keyfile downloaded from Google Cloud. If
|
96
|
+
# file path the file must be readable.
|
97
|
+
# @param [String, Array<String>] scope The OAuth 2.0 scopes controlling
|
98
|
+
# the set of resources and operations that the connection can access.
|
99
|
+
# See [Using OAuth 2.0 to Access Google
|
100
|
+
# APIs](https://developers.google.com/identity/protocols/OAuth2).
|
101
|
+
#
|
102
|
+
# The default scope is:
|
103
|
+
#
|
104
|
+
# * `https://www.googleapis.com/auth/cloud-platform`
|
105
|
+
#
|
106
|
+
# @param [Integer] timeout Default timeout to use in requests. Optional.
|
107
|
+
# @param [Hash] client_config A hash of values to override the default
|
108
|
+
# behavior of the API client. Optional.
|
109
|
+
#
|
110
|
+
# @return [Google::Cloud::ErrorReporting::Project]
|
111
|
+
#
|
112
|
+
# @example
|
113
|
+
# require "google/cloud/error_reporting"
|
114
|
+
#
|
115
|
+
# error_reporting = Google::Cloud::ErrorReporting.new
|
116
|
+
# # ...
|
117
|
+
#
|
118
|
+
def self.new project: nil, keyfile: nil, scope: nil, timeout: nil,
|
119
|
+
client_config: nil
|
120
|
+
project ||= Google::Cloud::ErrorReporting::Project.default_project
|
121
|
+
project = project.to_s
|
122
|
+
fail ArgumentError, "project is missing" if project.empty?
|
123
|
+
|
124
|
+
credentials =
|
125
|
+
Google::Cloud::ErrorReporting::Credentials.credentials_with_scope(
|
126
|
+
keyfile, scope)
|
127
|
+
|
128
|
+
Google::Cloud::ErrorReporting::Project.new(
|
129
|
+
Google::Cloud::ErrorReporting::Service.new(
|
130
|
+
project, credentials, timeout: timeout, client_config: client_config
|
131
|
+
)
|
132
|
+
)
|
133
|
+
end
|
134
|
+
|
135
|
+
##
|
136
|
+
# Configure the default {Google::Cloud::ErrorReporting::Project}
|
137
|
+
# client, allows the {.report} public method to reuse these
|
138
|
+
# configured parameters.
|
139
|
+
#
|
140
|
+
# See the [Configuration
|
141
|
+
# Guide](https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/stackdriver/guides/instrumentation_configuration)
|
142
|
+
# for full configuration parameters.
|
143
|
+
#
|
144
|
+
# @example
|
145
|
+
# # in app.rb
|
146
|
+
# require "google/cloud/error_reporting"
|
147
|
+
#
|
148
|
+
# Google::Cloud::ErrorReporting.configure do |config|
|
149
|
+
# config.project_id = "my-project-id"
|
150
|
+
# config.keyfile = "/path/to/keyfile.json"
|
151
|
+
# config.service_name = "my-service"
|
152
|
+
# config.service_version = "v8"
|
153
|
+
# end
|
154
|
+
#
|
155
|
+
# begin
|
156
|
+
# fail "boom"
|
157
|
+
# rescue => exception
|
158
|
+
# # Report exception using configuration parameters provided above
|
159
|
+
# Google::Cloud::ErrorReporting.report exception
|
160
|
+
# end
|
161
|
+
#
|
162
|
+
# @return [Stackdriver::Core::Configuration] The configuration object
|
163
|
+
# the Google::Cloud::ErrorReporting module uses.
|
164
|
+
#
|
165
|
+
def self.configure
|
166
|
+
yield Google::Cloud.configure.error_reporting if block_given?
|
167
|
+
|
168
|
+
Google::Cloud.configure.error_reporting
|
169
|
+
end
|
170
|
+
|
171
|
+
##
|
172
|
+
# Provides an easy-to-use interface to Report a Ruby exception object to
|
173
|
+
# Stackdriver ErrorReporting service. This method helps users to
|
174
|
+
# transform the Ruby exception into an Stackdriver ErrorReporting
|
175
|
+
# ErrorEvent gRPC structure, so users don't need to. This should be the
|
176
|
+
# prefered method to use when users wish to report captured exception in
|
177
|
+
# applications.
|
178
|
+
#
|
179
|
+
# This public method creates a default Stackdriver ErrorReporting client
|
180
|
+
# and reuse that between calls. The default client is initialized with
|
181
|
+
# parameters defined in {.configure}.
|
182
|
+
#
|
183
|
+
# The error event can be customized before reporting. See the example
|
184
|
+
# below and {Google::Cloud::ErrorReporting::ErrorEvent} class for avaiable
|
185
|
+
# error event fields.
|
186
|
+
#
|
187
|
+
# @example Basic usage
|
188
|
+
# # in app.rb
|
189
|
+
# require "google/cloud/error_reporting"
|
190
|
+
#
|
191
|
+
# begin
|
192
|
+
# fail "boom"
|
193
|
+
# rescue => exception
|
194
|
+
# # Report exception using configuration parameters provided above
|
195
|
+
# Google::Cloud::ErrorReporting.report exception
|
196
|
+
# end
|
197
|
+
#
|
198
|
+
# @example The error event can be customized if needed
|
199
|
+
# require "google/cloud/error_reporting"
|
200
|
+
#
|
201
|
+
# begin
|
202
|
+
# fail "boom"
|
203
|
+
# rescue => exception
|
204
|
+
# Google::Cloud::ErrorReporting.report exception do |error_event|
|
205
|
+
# error_event.user = "johndoh@example.com"
|
206
|
+
# error_event.http_status = "502"
|
207
|
+
# end
|
208
|
+
# end
|
209
|
+
#
|
210
|
+
# @param [Exception] exception The captured Ruby Exception object
|
211
|
+
# @param [String] service_name An identifier for running service.
|
212
|
+
# Optional.
|
213
|
+
# @param [String] service_version A version identifier for running
|
214
|
+
# service.
|
215
|
+
#
|
216
|
+
def self.report exception, service_name: nil, service_version: nil, &block
|
217
|
+
return if Google::Cloud.configure.use_error_reporting == false
|
218
|
+
|
219
|
+
unless @@default_client
|
220
|
+
project_id = configure.project_id ||
|
221
|
+
Google::Cloud.configure.project_id
|
222
|
+
keyfile = configure.keyfile ||
|
223
|
+
Google::Cloud.configure.keyfile
|
224
|
+
|
225
|
+
@@default_client = new project: project_id, keyfile: keyfile
|
226
|
+
end
|
227
|
+
|
228
|
+
service_name ||= configure.service_name
|
229
|
+
service_version ||= configure.service_version
|
230
|
+
|
231
|
+
@@default_client.report_exception exception,
|
232
|
+
service_name: service_name,
|
233
|
+
service_version: service_version,
|
234
|
+
&block
|
235
|
+
end
|
236
|
+
end
|
237
|
+
end
|
238
|
+
end
|