raven_logger 0.0.2
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 +7 -0
- data/lib/raven_logger.rb +96 -0
- metadata +72 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f3d374c2bfaad45bd82865b7ce4a027a718c8499
|
4
|
+
data.tar.gz: 3abad7655ed369cb5670d237d6c3f0228c98074b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f1f9332ab92a14cfe3862c4f57d58400163e6774e0324ad3e02d4efe92e959f929d975c329660ca99344828d4e6909e35c40743cde8246a66ccb13bdc46507f7
|
7
|
+
data.tar.gz: 1c6ec9b0c4b5a894735681e3814eda31868219b25f1c7a018ec4ec2ed18e1f1b0c738579a3cab837fd2a8851bb79207b634d46aa1751081d5cab1f2fb7ccb300
|
data/lib/raven_logger.rb
ADDED
@@ -0,0 +1,96 @@
|
|
1
|
+
require 'securerandom'
|
2
|
+
require 'digest'
|
3
|
+
require 'socket'
|
4
|
+
require 'time'
|
5
|
+
require 'rest-client'
|
6
|
+
require 'json'
|
7
|
+
require 'git-revision'
|
8
|
+
|
9
|
+
class RavenLogger
|
10
|
+
|
11
|
+
class << self
|
12
|
+
def captureMessage(title, opts={})
|
13
|
+
new.captureMessage(title, opts)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def captureMessage(title, opts={})
|
18
|
+
raise ArgumentError.new('Event title is missing') if !title
|
19
|
+
raise ArgumentError.new('SENTRY_PROJECT_URL env variable is missing') if !ENV['SENTRY_PROJECT_URL']
|
20
|
+
raise ArgumentError.new('SENTRY_KEY env variable is missing') if !ENV['SENTRY_KEY']
|
21
|
+
raise ArgumentError.new('SENTRY_SECRET env variable is missing') if !ENV['SENTRY_SECRET']
|
22
|
+
|
23
|
+
opts = symbolize_keys(opts)
|
24
|
+
opts[:level] ||= :info
|
25
|
+
extra = opts[:extra] || {}
|
26
|
+
level = opts[:level].to_s
|
27
|
+
|
28
|
+
valid_levels = %w(fatal error warning info debug)
|
29
|
+
|
30
|
+
if !valid_levels.include? level
|
31
|
+
raise ArgumentError.new("'#{level}' is not a valid level. Please use either: #{valid_levels.join(", ")}")
|
32
|
+
end
|
33
|
+
|
34
|
+
extra.merge!(git_message: Git::Revision.message)
|
35
|
+
|
36
|
+
payload = {
|
37
|
+
"event_id": (Digest::MD5.hexdigest SecureRandom.uuid),
|
38
|
+
"timestamp": Time.now.utc.iso8601,
|
39
|
+
"message": title,
|
40
|
+
"logger": "ruby",
|
41
|
+
"release": Git::Revision.commit_short,
|
42
|
+
"server_name": Socket.gethostname,
|
43
|
+
"environment": ENV['RAILS_ENV'] || 'testing',
|
44
|
+
"level": level,
|
45
|
+
"extra": extra
|
46
|
+
}
|
47
|
+
|
48
|
+
RestClient.post ENV['SENTRY_PROJECT_URL'], payload.to_json, headers
|
49
|
+
Rails.logger.debug("Sentry event sent.".green)
|
50
|
+
nil
|
51
|
+
end
|
52
|
+
|
53
|
+
private
|
54
|
+
|
55
|
+
def headers
|
56
|
+
headers = {
|
57
|
+
"Content-Type": "application/json",
|
58
|
+
"X-Sentry-Auth": "Sentry sentry_version=7, sentry_timestamp=#{Time.now.utc.to_i}, sentry_key=#{ENV['SENTRY_KEY']}, sentry_secret=#{ENV['SENTRY_SECRET']}, sentry_client=raven-intricately/1.0"
|
59
|
+
}
|
60
|
+
end
|
61
|
+
|
62
|
+
def symbolize_keys(obj)
|
63
|
+
case obj
|
64
|
+
when Array
|
65
|
+
obj.inject([]){|res, val|
|
66
|
+
res << case val
|
67
|
+
when Hash, Array
|
68
|
+
symbolize_keys(val)
|
69
|
+
else
|
70
|
+
val
|
71
|
+
end
|
72
|
+
res
|
73
|
+
}
|
74
|
+
when Hash
|
75
|
+
obj.inject({}){|res, (key, val)|
|
76
|
+
nkey = case key
|
77
|
+
when String
|
78
|
+
key.to_sym
|
79
|
+
else
|
80
|
+
key
|
81
|
+
end
|
82
|
+
nval = case val
|
83
|
+
when Hash, Array
|
84
|
+
symbolize_keys(val)
|
85
|
+
else
|
86
|
+
val
|
87
|
+
end
|
88
|
+
res[nkey] = nval
|
89
|
+
res
|
90
|
+
}
|
91
|
+
else
|
92
|
+
obj
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
end
|
metadata
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: raven_logger
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Giv Parvaneh
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-08-02 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rest-client
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.7.3
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.7.3
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: git-revision
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.0.1
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.0.1
|
41
|
+
description: Send arbitrary events to Sentry
|
42
|
+
email: giv@givp.org
|
43
|
+
executables: []
|
44
|
+
extensions: []
|
45
|
+
extra_rdoc_files: []
|
46
|
+
files:
|
47
|
+
- lib/raven_logger.rb
|
48
|
+
homepage: http://rubygems.org/gems/raven_logger
|
49
|
+
licenses:
|
50
|
+
- MIT
|
51
|
+
metadata: {}
|
52
|
+
post_install_message:
|
53
|
+
rdoc_options: []
|
54
|
+
require_paths:
|
55
|
+
- lib
|
56
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0'
|
61
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
62
|
+
requirements:
|
63
|
+
- - ">="
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
requirements: []
|
67
|
+
rubyforge_project:
|
68
|
+
rubygems_version: 2.6.14
|
69
|
+
signing_key:
|
70
|
+
specification_version: 4
|
71
|
+
summary: Ruby Raven Logger
|
72
|
+
test_files: []
|