telemetry-logger 0.1.1 → 0.2.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/.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
|