lamian 1.0.1 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/lamian.rb +2 -0
- data/lib/lamian/engine.rb +9 -11
- data/lib/lamian/logger.rb +16 -32
- data/lib/lamian/middleware.rb +1 -1
- data/lib/lamian/raven_context_extension.rb +13 -0
- data/lib/lamian/sidekiq_raven_middleware.rb +16 -0
- data/lib/lamian/version.rb +1 -1
- metadata +20 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5fed5c60bd57fa0cd1e33f57ee3ffebd8009ee7c
|
4
|
+
data.tar.gz: 6c6324fa43333c990e1562e0a8cb2e63f7871496
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e3b733bccc6a50fadefe5eac089eead5fa764a3dff4b3363049f5ad773d9f970a19b5e5e0395741ad3cd5bf8c6a7f6b01d583c9fa6d987fb4dce68c019c0034e
|
7
|
+
data.tar.gz: 6e966db934eee4fafe40ffb69c155dafb8b9f3d6ad15d53346b12b4c26a149ab1751d6bb23cfd2fd6317d05f81e3d787f965209f18bd0388771965307e8305f4
|
data/lib/lamian.rb
CHANGED
@@ -10,6 +10,8 @@ module Lamian
|
|
10
10
|
autoload :Logger, "lamian/logger"
|
11
11
|
autoload :LoggerExtension, "lamian/logger_extension"
|
12
12
|
autoload :Middleware, "lamian/middleware"
|
13
|
+
autoload :RavenContextExtension, "lamian/raven_context_extension"
|
14
|
+
autoload :SidekiqRavenMiddleware, "lamian/sidekiq_raven_middleware"
|
13
15
|
|
14
16
|
require "lamian/engine"
|
15
17
|
|
data/lib/lamian/engine.rb
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "rails"
|
4
|
-
require "exception_notification"
|
5
|
-
require "exception_notification/rails"
|
6
4
|
|
7
5
|
module Lamian
|
8
|
-
#
|
9
|
-
#
|
10
|
-
# Lamian views are used in exception_notifier to provide
|
11
|
-
# request_log section
|
6
|
+
# This engine is automatically loaded by Rails
|
7
|
+
# @see https://edgeguides.rubyonrails.org/engines.html Rails::Engine docs
|
12
8
|
class Engine < ::Rails::Engine
|
13
|
-
|
14
|
-
ExceptionNotification::Rack,
|
15
|
-
::Lamian::Middleware,
|
16
|
-
)
|
17
|
-
|
9
|
+
# Lamian views are used in exception_notifier to provide request_log section
|
18
10
|
paths["app/views"] << "lib/lamian/rails_views"
|
11
|
+
|
12
|
+
initializer "lamian.use_rack_middleware" do |app|
|
13
|
+
# :nocov:
|
14
|
+
app.config.middleware.unshift(Lamian::Middleware)
|
15
|
+
# :nocov:
|
16
|
+
end
|
19
17
|
end
|
20
18
|
end
|
data/lib/lamian/logger.rb
CHANGED
@@ -7,12 +7,6 @@ module Lamian
|
|
7
7
|
# Provides thread-local loggers to catch teed messages from
|
8
8
|
# regular loggers.
|
9
9
|
# Uses :__lamian_logger thread variable
|
10
|
-
# @attr level [Int]
|
11
|
-
# current log level, implicitly set to zero
|
12
|
-
# @attr logdevs [Array(StringIO)]
|
13
|
-
# stack of log devices used to store logs
|
14
|
-
# @attr formatter [Logger::Formatter]
|
15
|
-
# formatter, inherited from Lamian.config
|
16
10
|
class Logger < ::Logger
|
17
11
|
# Provides access to logger bound to curent thread
|
18
12
|
# @return [Lamian::Logger] current logger
|
@@ -23,22 +17,27 @@ module Lamian
|
|
23
17
|
def initialize
|
24
18
|
self.level = 0
|
25
19
|
self.logdevs = []
|
26
|
-
self.formatter = Lamian.config.formatter
|
27
20
|
end
|
28
21
|
|
29
22
|
# @see Lamian.run
|
30
23
|
# Collects logs sent inside block
|
31
24
|
def run
|
32
|
-
|
25
|
+
logdevs.push(StringIO.new)
|
26
|
+
|
33
27
|
yield
|
34
28
|
ensure
|
35
|
-
|
29
|
+
logdevs.pop
|
36
30
|
end
|
37
31
|
|
38
32
|
# Part of Logger api, entry point for all logs
|
39
33
|
# extened to run on each log device in stack
|
40
34
|
def add(*args, &block)
|
41
|
-
|
35
|
+
@formatter = Lamian.config.formatter
|
36
|
+
|
37
|
+
logdevs.each do |logdev|
|
38
|
+
@logdev = logdev
|
39
|
+
super
|
40
|
+
end
|
42
41
|
end
|
43
42
|
|
44
43
|
# @see Lamian.dump
|
@@ -56,7 +55,13 @@ module Lamian
|
|
56
55
|
|
57
56
|
private
|
58
57
|
|
59
|
-
|
58
|
+
# @return [Int]
|
59
|
+
# current log level, implicitly set to zero
|
60
|
+
attr_accessor :level
|
61
|
+
|
62
|
+
# @return [Array(StringIO)]
|
63
|
+
# stack of log devices used to store logs
|
64
|
+
attr_accessor :logdevs
|
60
65
|
|
61
66
|
# Formats string using given format
|
62
67
|
# @todo create `formatters` interface to allow real format selection
|
@@ -71,26 +76,5 @@ module Lamian
|
|
71
76
|
return unless string
|
72
77
|
string.gsub!(/\[\d{1,2}m/, "")
|
73
78
|
end
|
74
|
-
|
75
|
-
# Pushes new logdev in the start of #run call
|
76
|
-
# @param logdev [StringIO] new StringIO
|
77
|
-
def push_logdev(logdev)
|
78
|
-
logdevs << logdev
|
79
|
-
end
|
80
|
-
|
81
|
-
# Pops logdev in the end of #run call
|
82
|
-
# @return [StringIO] logdev
|
83
|
-
def pop_logdev
|
84
|
-
logdevs.pop
|
85
|
-
end
|
86
|
-
|
87
|
-
# Runs specific block with all logdevs in stack to
|
88
|
-
# populate them all
|
89
|
-
def each_logdev
|
90
|
-
logdevs.each do |logdev|
|
91
|
-
@logdev = logdev
|
92
|
-
yield
|
93
|
-
end
|
94
|
-
end
|
95
79
|
end
|
96
80
|
end
|
data/lib/lamian/middleware.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Lamian
|
4
|
-
# Provides rack middleware, which allows to
|
4
|
+
# Provides rack middleware, which allows to collect request logs
|
5
5
|
# @attr app [Proc] stored application
|
6
6
|
class Middleware
|
7
7
|
# @param app [Proc] stored application
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# A patch for Raven::Context class
|
4
|
+
module Lamian::RavenContextExtension
|
5
|
+
# Adds current lamian log to the extra part of all raven events generated inside Lamian.run block
|
6
|
+
# @see https://www.rubydoc.info/gems/sentry-raven/0.9.2/Raven/Context#extra-instance_method
|
7
|
+
def extra
|
8
|
+
log = Lamian.dump(format: :txt)
|
9
|
+
return super unless log
|
10
|
+
extra = super || {}
|
11
|
+
extra.merge(lamian_log: log)
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# A sidekiq middleware
|
4
|
+
class Lamian::SidekiqRavenMiddleware
|
5
|
+
# Adds current lamian log to the extra part of raven events generated inside sidekiq jobs
|
6
|
+
def call(*)
|
7
|
+
Lamian.run do
|
8
|
+
begin
|
9
|
+
yield
|
10
|
+
rescue Exception # rubocop:disable Lint/RescueException
|
11
|
+
Raven.extra_context(lamian_log: Lamian.dump(format: :txt))
|
12
|
+
raise
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/lamian/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lamian
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- JelF
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-12-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -24,20 +24,6 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '4.2'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: exception_notification
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: bundler
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -164,6 +150,20 @@ dependencies:
|
|
164
150
|
- - ">="
|
165
151
|
- !ruby/object:Gem::Version
|
166
152
|
version: 2.1.0
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: sentry-raven
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - "~>"
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: 2.7.4
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - "~>"
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: 2.7.4
|
167
167
|
description: Add logs to your error messages, using exception_notifier or smth like
|
168
168
|
it
|
169
169
|
email:
|
@@ -180,8 +180,10 @@ files:
|
|
180
180
|
- lib/lamian/middleware.rb
|
181
181
|
- lib/lamian/rails_views/exception_notifier/_request_log.html.erb
|
182
182
|
- lib/lamian/rails_views/exception_notifier/_request_log.text.erb
|
183
|
+
- lib/lamian/raven_context_extension.rb
|
184
|
+
- lib/lamian/sidekiq_raven_middleware.rb
|
183
185
|
- lib/lamian/version.rb
|
184
|
-
homepage: https://github.com/
|
186
|
+
homepage: https://github.com/umbrellio/lamian
|
185
187
|
licenses: []
|
186
188
|
metadata: {}
|
187
189
|
post_install_message:
|
@@ -200,7 +202,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
200
202
|
version: '0'
|
201
203
|
requirements: []
|
202
204
|
rubyforge_project:
|
203
|
-
rubygems_version: 2.5.2
|
205
|
+
rubygems_version: 2.5.2.3
|
204
206
|
signing_key:
|
205
207
|
specification_version: 4
|
206
208
|
summary: Add logs to your error messages
|