Module: Errsight
- Defined in:
- lib/errsight.rb,
lib/errsight/client.rb,
lib/errsight/logger.rb,
lib/errsight/railtie.rb,
lib/errsight/version.rb,
lib/errsight/middleware.rb,
lib/errsight/configuration.rb
Defined Under Namespace
Classes: Client, Configuration, ConfigurationError, Error, Logger, Middleware, Railtie
Constant Summary collapse
- BREADCRUMB_LIMIT =
50- VERSION =
"0.1.2"
Class Method Summary collapse
- .add_breadcrumb(category:, message:, level: :info, data: nil) ⇒ Object
- .capture_exception(exception, metadata: {}, fingerprint: nil, user: nil, tags: nil) ⇒ Object
- .clear_breadcrumbs ⇒ Object
- .clear_tags ⇒ Object
- .clear_user ⇒ Object
- .client ⇒ Object
- .configuration ⇒ Object
- .configure {|configuration| ... } ⇒ Object
- .log(level:, message:, backtrace: nil, environment: nil, metadata: {}, occurred_at: nil, fingerprint: nil, user: nil, tags: nil, release: nil) ⇒ Object
- .set_tag(key, value) ⇒ Object
- .set_tags(tags) ⇒ Object
- .set_user(user) ⇒ Object
Class Method Details
.add_breadcrumb(category:, message:, level: :info, data: nil) ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/errsight.rb', line 52 def (category:, message:, level: :info, data: nil) crumbs = Thread.current[:errsight_breadcrumbs] ||= [] crumbs << { timestamp: Time.now.iso8601(3), category: category.to_s, level: level.to_s, message: .to_s, data: data.is_a?(Hash) ? data : nil }.compact crumbs.shift while crumbs.size > BREADCRUMB_LIMIT end |
.capture_exception(exception, metadata: {}, fingerprint: nil, user: nil, tags: nil) ⇒ Object
90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/errsight.rb', line 90 def capture_exception(exception, metadata: {}, fingerprint: nil, user: nil, tags: nil) return unless exception.is_a?(Exception) log( level: :error, message: "#{exception.class}: #{exception.}", backtrace: exception.backtrace&.join("\n"), metadata: .merge(exception_class: exception.class.to_s), fingerprint: fingerprint, user: user, tags: ) end |
.clear_breadcrumbs ⇒ Object
64 65 66 |
# File 'lib/errsight.rb', line 64 def Thread.current[:errsight_breadcrumbs] = nil end |
.clear_tags ⇒ Object
48 49 50 |
# File 'lib/errsight.rb', line 48 def Thread.current[:errsight_tags] = nil end |
.clear_user ⇒ Object
33 34 35 |
# File 'lib/errsight.rb', line 33 def clear_user Thread.current[:errsight_user] = nil end |
.client ⇒ Object
25 26 27 |
# File 'lib/errsight.rb', line 25 def client @client ||= Client.new(configuration) end |
.configuration ⇒ Object
15 16 17 |
# File 'lib/errsight.rb', line 15 def configuration @configuration ||= Configuration.new end |
.configure {|configuration| ... } ⇒ Object
19 20 21 22 23 |
# File 'lib/errsight.rb', line 19 def configure yield configuration configuration.validate! configuration end |
.log(level:, message:, backtrace: nil, environment: nil, metadata: {}, occurred_at: nil, fingerprint: nil, user: nil, tags: nil, release: nil) ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/errsight.rb', line 68 def log(level:, message:, backtrace: nil, environment: nil, metadata: {}, occurred_at: nil, fingerprint: nil, user: nil, tags: nil, release: nil) return unless configuration.enabled? return if level_below_threshold?(level) event = { level: level.to_s, message: .to_s, backtrace: backtrace, environment: environment || configuration.environment, metadata: , occurred_at: (occurred_at || Time.now).iso8601(3), release: release || configuration.release, user: user || Thread.current[:errsight_user], tags: (), breadcrumbs: Thread.current[:errsight_breadcrumbs] || [] } event[:fingerprint] = fingerprint if fingerprint event.compact! client.enqueue(event) end |
.set_tag(key, value) ⇒ Object
37 38 39 40 |
# File 'lib/errsight.rb', line 37 def set_tag(key, value) = Thread.current[:errsight_tags] ||= {} [key.to_s] = value.to_s end |
.set_tags(tags) ⇒ Object
42 43 44 45 46 |
# File 'lib/errsight.rb', line 42 def () return unless .is_a?(Hash) store = Thread.current[:errsight_tags] ||= {} .each { |k, v| store[k.to_s] = v.to_s } end |
.set_user(user) ⇒ Object
29 30 31 |
# File 'lib/errsight.rb', line 29 def set_user(user) Thread.current[:errsight_user] = user.is_a?(Hash) ? user : nil end |