memolog 0.2.1 → 0.3.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 +4 -4
- data/.gitignore +2 -0
- data/CHANGELOG.md +15 -0
- data/Gemfile +0 -1
- data/Gemfile.lock +3 -32
- data/README.md +7 -10
- data/lib/memolog/config.rb +1 -3
- data/lib/memolog/init.rb +11 -13
- data/lib/memolog/{middleware.rb → rails_middleware.rb} +1 -1
- data/lib/memolog/sentry_extension.rb +24 -0
- data/lib/memolog/sidekiq_middleware.rb +7 -0
- data/lib/memolog/version.rb +1 -1
- data/lib/memolog.rb +9 -6
- metadata +5 -5
- data/lib/memolog/sentry_scope_extension.rb +0 -8
- data/lib/memolog/sentry_sidekiq_middleware.rb +0 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 97630c7e390e26c97872776f9c6b142fcb18cafaf05ceb937a8ee4a10537212c
|
4
|
+
data.tar.gz: 568faf40b03bc8488d651b7e09eda247f5f22e399d583d97b671868618b91e4c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fb3b455425fa4e68c68620248e1cf3493e1888e7023e62cb1179b31b1a316def07c0b918ae1fa4ba3b3ff6b23c339a9f481a340fcd784a712405622ad87a77b1
|
7
|
+
data.tar.gz: 8cde0d72453487d056a4e507a06943bc21d2a5c5d52a8c6298b85bdc81375c189fd39904be27fb5304757cbba70493650b9a14ec4f0482846ae7ae587fe11572
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,18 @@
|
|
1
|
+
## 0.3.0
|
2
|
+
|
3
|
+
- Apply a prepend patch with `Sentry::Scope#apply_to_event` method.
|
4
|
+
- Check constant definition via `Object.const_defined?`
|
5
|
+
- Moving `Sentry::Sidekiq` scheme to monkey patch `Sentry::Sidekiq::SentryContextServerMiddleware`
|
6
|
+
- More specs
|
7
|
+
|
8
|
+
## 0.2.2
|
9
|
+
|
10
|
+
- Do not init Rails middleware in Sidekiq server.
|
11
|
+
|
12
|
+
## 0.2.1
|
13
|
+
|
14
|
+
- Better Rails middleware initialization.
|
15
|
+
|
1
16
|
## 0.2.0
|
2
17
|
|
3
18
|
- Uprade gem due [CVE-2021-41098](https://github.com/advisories/GHSA-2rr5-8q37-2w7h)
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
memolog (0.2
|
4
|
+
memolog (0.3.2)
|
5
5
|
logger (~> 1.4.3)
|
6
6
|
securerandom (~> 0.1.0)
|
7
7
|
|
@@ -75,30 +75,11 @@ GEM
|
|
75
75
|
crass (1.0.6)
|
76
76
|
diff-lcs (1.4.4)
|
77
77
|
erubi (1.10.0)
|
78
|
-
faraday (1.8.0)
|
79
|
-
faraday-em_http (~> 1.0)
|
80
|
-
faraday-em_synchrony (~> 1.0)
|
81
|
-
faraday-excon (~> 1.1)
|
82
|
-
faraday-httpclient (~> 1.0.1)
|
83
|
-
faraday-net_http (~> 1.0)
|
84
|
-
faraday-net_http_persistent (~> 1.1)
|
85
|
-
faraday-patron (~> 1.0)
|
86
|
-
faraday-rack (~> 1.0)
|
87
|
-
multipart-post (>= 1.2, < 3)
|
88
|
-
ruby2_keywords (>= 0.0.4)
|
89
|
-
faraday-em_http (1.0.0)
|
90
|
-
faraday-em_synchrony (1.0.0)
|
91
|
-
faraday-excon (1.1.0)
|
92
|
-
faraday-httpclient (1.0.1)
|
93
|
-
faraday-net_http (1.0.1)
|
94
|
-
faraday-net_http_persistent (1.2.0)
|
95
|
-
faraday-patron (1.0.0)
|
96
|
-
faraday-rack (1.0.0)
|
97
78
|
globalid (0.5.2)
|
98
79
|
activesupport (>= 5.0)
|
99
80
|
i18n (1.8.10)
|
100
81
|
concurrent-ruby (~> 1.0)
|
101
|
-
logger (1.4.
|
82
|
+
logger (1.4.4)
|
102
83
|
loofah (2.12.0)
|
103
84
|
crass (~> 1.0.2)
|
104
85
|
nokogiri (>= 1.5.9)
|
@@ -108,7 +89,6 @@ GEM
|
|
108
89
|
method_source (1.0.0)
|
109
90
|
mini_mime (1.1.1)
|
110
91
|
minitest (5.14.4)
|
111
|
-
multipart-post (2.1.1)
|
112
92
|
nio4r (2.5.8)
|
113
93
|
nokogiri (1.12.5-x86_64-darwin)
|
114
94
|
racc (~> 1.4)
|
@@ -201,15 +181,7 @@ GEM
|
|
201
181
|
rubocop-sequel (0.2.0)
|
202
182
|
rubocop (~> 1.0)
|
203
183
|
ruby-progressbar (1.11.0)
|
204
|
-
|
205
|
-
securerandom (0.1.0)
|
206
|
-
sentry-ruby (4.7.3)
|
207
|
-
concurrent-ruby (~> 1.0, >= 1.0.2)
|
208
|
-
faraday (>= 1.0)
|
209
|
-
sentry-ruby-core (= 4.7.3)
|
210
|
-
sentry-ruby-core (4.7.3)
|
211
|
-
concurrent-ruby
|
212
|
-
faraday
|
184
|
+
securerandom (0.1.1)
|
213
185
|
sidekiq (6.2.2)
|
214
186
|
connection_pool (>= 2.2.2)
|
215
187
|
rack (~> 2.0)
|
@@ -241,7 +213,6 @@ DEPENDENCIES
|
|
241
213
|
rake
|
242
214
|
rspec
|
243
215
|
rubocop-config-umbrellio
|
244
|
-
sentry-ruby
|
245
216
|
sidekiq
|
246
217
|
|
247
218
|
BUNDLED WITH
|
data/README.md
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
# Memolog
|
2
2
|
|
3
3
|
Memolog is an in-memory logger, which extend any other logger.
|
4
|
-
Designed to work with [Sentry](https://github.com/getsentry/sentry-ruby).
|
5
|
-
It adds `memolog` extra section to Sentry errors.
|
4
|
+
Designed to work with [Sentry](https://github.com/getsentry/sentry-ruby) but it's not necessary.
|
6
5
|
|
7
6
|
## Installation
|
8
7
|
|
@@ -28,9 +27,8 @@ Use this example during application initialization process (this example impleme
|
|
28
27
|
Memolog.configure do |config|
|
29
28
|
config.debug = false
|
30
29
|
config.formatter = ::Memolog::Formatter.new
|
31
|
-
config.initializers = %i[rails
|
30
|
+
config.initializers = %i[rails sidekiq]
|
32
31
|
config.log_size_limit = 50_000
|
33
|
-
config.sentry_key = :memolog
|
34
32
|
config.uuid_callable = -> { SecureRandom.uuid }
|
35
33
|
end
|
36
34
|
|
@@ -41,18 +39,17 @@ Available options are:
|
|
41
39
|
- `debug` - set it to true if you need to leave Memolog.dump result outside `Memolog.run {}` block.
|
42
40
|
- `formatter` - setup your own formatter.
|
43
41
|
- `initializers` - define here what you want to initialize in `#init!` call.
|
44
|
-
- `log_size_limit` - max log length in
|
45
|
-
- `sentry_key` - key name in Sentry extra object.
|
42
|
+
- `log_size_limit` - max log length in `#dump`.
|
46
43
|
- `uuid_callable` - Memolog add unique value to logs, here you can redefine uuid generation.
|
47
44
|
|
48
45
|
## Usage
|
49
46
|
|
50
47
|
Please call `Memolog.extend_logger(Rails.logger)` or any other logger you want to collect.
|
51
|
-
After that when error occured you can
|
52
|
-
|
53
|
-
server or log collection system.
|
48
|
+
After that when error occured you can call `Memolog.dump` in your code and get log from
|
49
|
+
`Rails.logger` so you can collect it to another place (Sentry or etc). Also there will be unique
|
50
|
+
identifier to find logs behaviour on your server or log collection system.
|
54
51
|
|
55
|
-
Memolog has init code for Rails (Middleware)
|
52
|
+
Memolog has init code for Rails (Middleware) and Sidekiq (Middleware).
|
56
53
|
It implement all hacks on the `Memolog.init!` call.
|
57
54
|
Also you can add `Memolog.run {}` around logs you want to collect and release it with `Memolog.dump`
|
58
55
|
inside this block.
|
data/lib/memolog/config.rb
CHANGED
@@ -5,15 +5,13 @@ Memolog::Config = Struct.new(
|
|
5
5
|
:formatter,
|
6
6
|
:initializers,
|
7
7
|
:log_size_limit,
|
8
|
-
:sentry_key,
|
9
8
|
:uuid_callable,
|
10
9
|
) do
|
11
10
|
def initialize
|
12
11
|
self.debug = false
|
13
12
|
self.formatter = ::Memolog::Formatter.new
|
14
|
-
self.initializers = %i[rails
|
13
|
+
self.initializers = %i[rails sidekiq]
|
15
14
|
self.log_size_limit = 50_000
|
16
|
-
self.sentry_key = :memolog
|
17
15
|
self.uuid_callable = -> { SecureRandom.uuid }
|
18
16
|
end
|
19
17
|
end
|
data/lib/memolog/init.rb
CHANGED
@@ -2,29 +2,27 @@
|
|
2
2
|
|
3
3
|
class Memolog::Init
|
4
4
|
def call
|
5
|
-
|
6
|
-
|
7
|
-
init_sidekiq!
|
5
|
+
init_rails_middleware!
|
6
|
+
init_sidekiq_middleware!
|
8
7
|
end
|
9
8
|
|
10
9
|
private
|
11
10
|
|
12
|
-
def
|
13
|
-
return unless
|
14
|
-
|
15
|
-
|
11
|
+
def init_rails_middleware!
|
12
|
+
return unless Memolog.config.initializers.include?(:rails)
|
13
|
+
return unless Object.const_defined?("Rails")
|
14
|
+
return if Object.const_defined?("Sidekiq") && Sidekiq.server?
|
16
15
|
|
17
|
-
|
18
|
-
return unless defined?(Sentry::Scope) && Memolog.config.initializers.include?(:sentry)
|
19
|
-
Sentry::Scope.prepend(Memolog::SentryScopeExtension)
|
16
|
+
Rails.application.middleware.insert_before(0, Memolog::RailsMiddleware)
|
20
17
|
end
|
21
18
|
|
22
|
-
def
|
23
|
-
return unless
|
19
|
+
def init_sidekiq_middleware!
|
20
|
+
return unless Memolog.config.initializers.include?(:sidekiq)
|
21
|
+
return unless Object.const_defined?("Sidekiq")
|
24
22
|
|
25
23
|
Sidekiq.configure_server do |config|
|
26
24
|
config.server_middleware do |chain|
|
27
|
-
chain.prepend(Memolog::
|
25
|
+
chain.prepend(Memolog::SidekiqMiddleware)
|
28
26
|
end
|
29
27
|
end
|
30
28
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Memolog::SentryExtension
|
4
|
+
def self.prepended(base)
|
5
|
+
base.singleton_class.send(:prepend, ClassMethods)
|
6
|
+
end
|
7
|
+
|
8
|
+
module ClassMethods
|
9
|
+
def capture_exception(exception, **options, &block)
|
10
|
+
set_extras_memolog!
|
11
|
+
super
|
12
|
+
end
|
13
|
+
|
14
|
+
def capture_message(message, **options, &block)
|
15
|
+
set_extras_memolog!
|
16
|
+
super
|
17
|
+
end
|
18
|
+
|
19
|
+
def set_extras_memolog!
|
20
|
+
return unless get_current_scope
|
21
|
+
set_extras(Memolog.config.sentry_key => Memolog.dump)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/lib/memolog/version.rb
CHANGED
data/lib/memolog.rb
CHANGED
@@ -9,17 +9,16 @@ require "memolog/config"
|
|
9
9
|
require "memolog/extension"
|
10
10
|
require "memolog/formatter"
|
11
11
|
require "memolog/init"
|
12
|
-
require "memolog/
|
13
|
-
require "memolog/
|
14
|
-
require "memolog/
|
12
|
+
require "memolog/rails_middleware"
|
13
|
+
require "memolog/sentry_extension"
|
14
|
+
require "memolog/sidekiq_middleware"
|
15
15
|
|
16
16
|
module Memolog
|
17
17
|
extend self
|
18
18
|
|
19
|
-
attr_accessor :config
|
19
|
+
attr_accessor :config
|
20
20
|
|
21
21
|
@config = Memolog::Config.new
|
22
|
-
@logdevs = []
|
23
22
|
|
24
23
|
def configure
|
25
24
|
yield(config) if block_given?
|
@@ -42,6 +41,10 @@ module Memolog
|
|
42
41
|
Thread.current[:memolog_logger] ||= Logger.new(nil, formatter: config.formatter)
|
43
42
|
end
|
44
43
|
|
44
|
+
def logdevs
|
45
|
+
Thread.current[:memolog_logdevs] ||= []
|
46
|
+
end
|
47
|
+
|
45
48
|
def run
|
46
49
|
Thread.current[:memolog_uuid] = config.uuid_callable.call
|
47
50
|
|
@@ -59,6 +62,6 @@ module Memolog
|
|
59
62
|
beginning = logdevs.last.string.length - config.log_size_limit
|
60
63
|
beginning = 0 if beginning.negative?
|
61
64
|
|
62
|
-
logdevs.last.string.slice(beginning, config.log_size_limit)
|
65
|
+
logdevs.last.string.slice(beginning, config.log_size_limit).presence
|
63
66
|
end
|
64
67
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: memolog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stepan Kirushkin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-11-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: logger
|
@@ -64,9 +64,9 @@ files:
|
|
64
64
|
- lib/memolog/extension.rb
|
65
65
|
- lib/memolog/formatter.rb
|
66
66
|
- lib/memolog/init.rb
|
67
|
-
- lib/memolog/
|
68
|
-
- lib/memolog/
|
69
|
-
- lib/memolog/
|
67
|
+
- lib/memolog/rails_middleware.rb
|
68
|
+
- lib/memolog/sentry_extension.rb
|
69
|
+
- lib/memolog/sidekiq_middleware.rb
|
70
70
|
- lib/memolog/version.rb
|
71
71
|
homepage: https://github.com/skirushkin/memolog
|
72
72
|
licenses:
|
@@ -1,13 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
class Memolog::SentrySidekiqMiddleware
|
4
|
-
def call(*)
|
5
|
-
Memolog.run do
|
6
|
-
yield
|
7
|
-
rescue => error
|
8
|
-
memolog_dump = Memolog.dump
|
9
|
-
Sentry.set_extras(Memolog.config.sentry_key => memolog_dump) if memolog_dump
|
10
|
-
raise error
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|