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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 650aaafabdc5a72622435581d70848ae723e45d82e9d34d8315e91db845842af
4
- data.tar.gz: 7c9fc8c2364f206204b29b8e0e520ffb67f60a72066e0d750cba0ba55e0b466e
3
+ metadata.gz: c8b9e5e04fc5b3187ac17652368398e3a67108ad7e4e1a318678d2701a670680
4
+ data.tar.gz: bae5674c3071ad5b0c91d37b963d87e0fdbbe5c631dc89d0c77cf30d9ee864f3
5
5
  SHA512:
6
- metadata.gz: 334ad853722b7c2477ff457d9b00524de9d83b6d0e5df7f322e9c0681b5aab2ff43ce999b668feb943f35464bd8250ec883e166f609cabea2222a30446d72283
7
- data.tar.gz: 3425c27ced9ab4b2e812c1ffed3c1671c10e3a9974e0242be44500f869257da3d5ca79acab5fab79020194f25dcda0411b4f279fcd12fb368488680dc5b559eb
6
+ metadata.gz: 83f9d357b6dfd30dec387eb1e20c68214efb867a3430d1cb70647155ce22b58b4e41c73e0a19fe344c28bb96fca391ffb3e5552a3626a210bebc3145985c596a
7
+ data.tar.gz: dec6bd0514911e187277e354bd8b6079adda89545dacd33f2a2f278bf2ac2f33a10c03d4e74ea89be2491bf6df9e3bea8c6627464c170de1f1842f2bc5f40479
@@ -21,4 +21,8 @@ jobs:
21
21
  bash -c "
22
22
  rubocop --require code_scanning --format CodeScanning::SarifFormatter -o rubocop.sarif
23
23
  [[ $? -ne 2 ]]
24
- "
24
+ "
25
+ - name: Upload Sarif output
26
+ uses: github/codeql-action/upload-sarif@v1
27
+ with:
28
+ sarif_file: rubocop.sarif
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
- Example
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.
@@ -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
@@ -1,5 +1,5 @@
1
1
  module Telemetry
2
2
  module Logger
3
- VERSION = '0.1.1'.freeze
3
+ VERSION = '0.2.0'.freeze
4
4
  end
5
5
  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.1.1
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-07-22 00:00:00.000000000 Z
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.2.15
94
+ rubygems_version: 3.1.6
93
95
  signing_key:
94
96
  specification_version: 4
95
97
  summary: Telemetry Logging Gem