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 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