telemetry-logger 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/rubocop.yml +5 -1
- data/CHANGELOG.md +6 -0
- data/README.md +37 -1
- data/SECURITY.md +19 -0
- data/lib/telemetry/logger.rb +3 -0
- data/lib/telemetry/logger/exception_handler.rb +33 -0
- data/lib/telemetry/logger/version.rb +1 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c8b9e5e04fc5b3187ac17652368398e3a67108ad7e4e1a318678d2701a670680
|
4
|
+
data.tar.gz: bae5674c3071ad5b0c91d37b963d87e0fdbbe5c631dc89d0c77cf30d9ee864f3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 83f9d357b6dfd30dec387eb1e20c68214efb867a3430d1cb70647155ce22b58b4e41c73e0a19fe344c28bb96fca391ffb3e5552a3626a210bebc3145985c596a
|
7
|
+
data.tar.gz: dec6bd0514911e187277e354bd8b6079adda89545dacd33f2a2f278bf2ac2f33a10c03d4e74ea89be2491bf6df9e3bea8c6627464c170de1f1842f2bc5f40479
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
# Telemetry::Logger
|
2
2
|
|
3
|
+
## v0.2.0
|
4
|
+
* Adding new module called `Telemetry::Logger::ExceptionHandler`
|
5
|
+
* Adding methods for `exception` and magic for detecting `ElasticAPM` and `OpenTelemetry`
|
6
|
+
* Adding `Upload Sarif output` step to `rubocop` GitHub action
|
7
|
+
* Adding `SECURITY.md` file
|
8
|
+
|
3
9
|
## v0.1.1
|
4
10
|
* Fixing issue with color option using the wrong method name
|
5
11
|
* Removing format logger from the setup command
|
data/README.md
CHANGED
@@ -1,13 +1,49 @@
|
|
1
1
|
# Telemetry::Logger
|
2
2
|
A generic gem to handle logging for all other telemetry gems
|
3
3
|
|
4
|
-
|
4
|
+
#### Setting up the logger
|
5
|
+
```ruby
|
6
|
+
Telemetry::Logger.setup(level: 'warn', color: false, log_file: './telemetry.log')
|
7
|
+
|
8
|
+
opts = {
|
9
|
+
include_pid: false,
|
10
|
+
level: 'info',
|
11
|
+
log_file: nil,
|
12
|
+
color: true,
|
13
|
+
application: 'telemetry',
|
14
|
+
app_version: Telemetry::Logger::VERSION
|
15
|
+
}
|
16
|
+
```
|
17
|
+
|
18
|
+
#### Example Logging
|
5
19
|
```ruby
|
6
20
|
Telemetry::Logger.setup(level: 'info')
|
7
21
|
Telemetry::Logger.info 'test info'
|
22
|
+
|
8
23
|
Telemetry::Logger.debug 'test debug'
|
9
24
|
Telemetry::Logger.warn 'test warn'
|
10
25
|
Telemetry::Logger.error 'test error'
|
11
26
|
Telemetry::Logger.fatal 'test fatal'
|
12
27
|
Telemetry::Logger.unknown 'test unknown'
|
13
28
|
```
|
29
|
+
|
30
|
+
#### Example Exception Tracking
|
31
|
+
Instead of repeating the same error method all over the place for exceptions, you can use the `exception` method to
|
32
|
+
save on complexity and automatically report exceptions to supported APMs
|
33
|
+
|
34
|
+
```ruby
|
35
|
+
Telemetry::Logger.setup(level: 'info')
|
36
|
+
Telemetry::Logger.exception(StandardError.new('test error'), level: 'warn')
|
37
|
+
Telemetry::Logger.exception(StandardError.new('test error'), level: 'fatal')
|
38
|
+
Telemetry::Logger.exception(StandardError.new('test error'), handled: true)
|
39
|
+
Telemetry::Logger.exception(StandardError.new('test error'), backtrace: true)
|
40
|
+
|
41
|
+
# options for exception method
|
42
|
+
opts = {
|
43
|
+
level: 'error', # sets the log level
|
44
|
+
handled: true, # tells the apms if we handled this exception
|
45
|
+
backtrace: true, # should we log the backtrace?
|
46
|
+
backtrace_limit: 20, # how many lines should we limit the backtrace to?
|
47
|
+
raise: false, # should we reraise this exception instead of swallowing it?
|
48
|
+
}
|
49
|
+
```
|
data/SECURITY.md
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
# Security Policy
|
2
|
+
|
3
|
+
## Supported Versions
|
4
|
+
|
5
|
+
Use this section to tell people about which versions of your project are
|
6
|
+
currently being supported with security updates.
|
7
|
+
|
8
|
+
| Version | Supported |
|
9
|
+
| ------- | ------------------ |
|
10
|
+
| 0.x.x | :white_check_mark: |
|
11
|
+
|
12
|
+
|
13
|
+
## Reporting a Vulnerability
|
14
|
+
|
15
|
+
Use this section to tell people how to report a vulnerability.
|
16
|
+
|
17
|
+
Tell them where to go, how often they can expect to get an update on a
|
18
|
+
reported vulnerability, what to expect if the vulnerability is accepted or
|
19
|
+
declined, etc.
|
data/lib/telemetry/logger.rb
CHANGED
@@ -2,6 +2,7 @@ require 'telemetry/logger/version'
|
|
2
2
|
require 'telemetry/logger/defaults'
|
3
3
|
require 'telemetry/logger/builder'
|
4
4
|
require 'telemetry/logger/methods'
|
5
|
+
require 'telemetry/logger/exception_handler'
|
5
6
|
|
6
7
|
module Telemetry
|
7
8
|
module Logger
|
@@ -9,8 +10,10 @@ module Telemetry
|
|
9
10
|
include Telemetry::Logger::Defaults
|
10
11
|
include Telemetry::Logger::Methods
|
11
12
|
include Telemetry::Logger::Builder
|
13
|
+
include Telemetry::Logger::ExceptionHandler
|
12
14
|
|
13
15
|
def setup(level: 'info', **opts)
|
16
|
+
@opts = opts
|
14
17
|
output(**opts)
|
15
18
|
self.log_level = level
|
16
19
|
self
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Telemetry
|
2
|
+
module Logger
|
3
|
+
module ExceptionHandler
|
4
|
+
def exception(exc, level: 'error', backtrace: true, backtrace_limit: 20, **opts)
|
5
|
+
level = 'unknown' unless %w[debug info warn error fatal].include? level.to_s
|
6
|
+
Telemetry::Logger.send(level, "#{exc.class}: #{exc.message}")
|
7
|
+
Telemetry::Logger.send(level, exc.backtrace[0..backtrace_limit]) if backtrace && !exc.backtrace.nil?
|
8
|
+
|
9
|
+
send_to_apm(exc, level: level)
|
10
|
+
|
11
|
+
raise(exc) if opts[:raise]
|
12
|
+
end
|
13
|
+
|
14
|
+
def send_to_apm(exc, **opts)
|
15
|
+
handled = opts[:handled] || %w[info debug].include?(opts[:level])
|
16
|
+
::ElasticAPM.report(exc, handled: handled) if elastic_apm?
|
17
|
+
::OpenTelemetry.handle_error(exception: exc, message: exc.message) if open_telemetry?
|
18
|
+
end
|
19
|
+
|
20
|
+
def elastic_apm?
|
21
|
+
@elastic_apm unless @elastic_apm.nil?
|
22
|
+
|
23
|
+
@elastic_apm = Kernel.const_defined? 'ElasticAPM'
|
24
|
+
end
|
25
|
+
|
26
|
+
def open_telemetry?
|
27
|
+
@open_telemetry unless @open_telemetry.nil?
|
28
|
+
|
29
|
+
@open_telemetry = Kernel.const_defined? 'OpenTelemetry'
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: telemetry-logger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Esity
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-08-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: multi_json
|
@@ -58,10 +58,12 @@ files:
|
|
58
58
|
- LICENSE
|
59
59
|
- NOTICE.txt
|
60
60
|
- README.md
|
61
|
+
- SECURITY.md
|
61
62
|
- attribution.txt
|
62
63
|
- lib/telemetry/logger.rb
|
63
64
|
- lib/telemetry/logger/builder.rb
|
64
65
|
- lib/telemetry/logger/defaults.rb
|
66
|
+
- lib/telemetry/logger/exception_handler.rb
|
65
67
|
- lib/telemetry/logger/methods.rb
|
66
68
|
- lib/telemetry/logger/version.rb
|
67
69
|
- sourcehawk.yml
|
@@ -89,7 +91,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
89
91
|
- !ruby/object:Gem::Version
|
90
92
|
version: '0'
|
91
93
|
requirements: []
|
92
|
-
rubygems_version: 3.
|
94
|
+
rubygems_version: 3.1.6
|
93
95
|
signing_key:
|
94
96
|
specification_version: 4
|
95
97
|
summary: Telemetry Logging Gem
|