google-cloud-error_reporting 0.24.0 → 0.25.0
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/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
|