heavylog 0.0.8 → 0.0.9
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/lib/heavylog/railtie.rb +1 -0
- data/lib/heavylog/sidekiq_exception_handler.rb +10 -0
- data/lib/heavylog/sidekiq_logger.rb +30 -0
- data/lib/heavylog/version.rb +1 -1
- data/lib/heavylog.rb +34 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4aa084da3eb852633de1b48ab303da16e6f5177cf56995b135f483b92484159e
|
4
|
+
data.tar.gz: 86fc4f5d4892b4c18719c74a7f7d626ea536360811a5ce2a15bcd761eae91a33
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b904c1a842315c5a2aefea6e553c07b26b9055d3e5a72cc7a7cd0b0b4c129e6423161ff554284cdaa4a03d25f93247d7dc83587c719bdfcb4c62e51a4a10330b
|
7
|
+
data.tar.gz: bf51e06cb88c89fd027c86152441e137742729210130d127320fd7c5a56a92785876645fd99777816d242f12355fdf530b2f0d5ae537204381b304ca93465c0c
|
data/lib/heavylog/railtie.rb
CHANGED
@@ -5,6 +5,7 @@ module Heavylog
|
|
5
5
|
config.heavylog.enabled = false
|
6
6
|
config.heavylog.path = 'log/heavylog.log'
|
7
7
|
config.heavylog.message_limit = 1024 * 1024 * 50 # 50MB
|
8
|
+
config.heavylog.log_sidekiq = false
|
8
9
|
|
9
10
|
initializer "heavylog.insert_middleware" do |app|
|
10
11
|
app.config.middleware.insert_before Rails::Rack::Logger, Heavylog::Middleware
|
@@ -0,0 +1,10 @@
|
|
1
|
+
module Heavylog
|
2
|
+
class SidekiqExceptionHandler
|
3
|
+
def call(ex, ctxHash)
|
4
|
+
Heavylog.log(:warn, Sidekiq.dump_json(ctxHash)) if !ctxHash.empty?
|
5
|
+
Heavylog.log(:warn, "#{ex.class.name}: #{ex.message}")
|
6
|
+
Heavylog.log(:warn, ex.backtrace.join("\n")) unless ex.backtrace.nil?
|
7
|
+
Heavylog.finish_sidekiq
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Heavylog
|
2
|
+
class SidekiqLogger
|
3
|
+
def call(item, queue)
|
4
|
+
# item = {"class"=>"SuspiciousJob", "args"=>[12754545, [3858890], "invoice"], "retry"=>true, "queue"=>"default", "jid"=>"5ec968571e358497d70a3cf2", "created_at"=>1540484817.3950138, "enqueued_at"=>1540484817.395076}
|
5
|
+
|
6
|
+
Heavylog.log_sidekiq(item["jid"], item["class"], item["args"])
|
7
|
+
|
8
|
+
begin
|
9
|
+
start = ::Process.clock_gettime(::Process::CLOCK_MONOTONIC)
|
10
|
+
logger.info("start")
|
11
|
+
yield
|
12
|
+
logger.info("done: #{elapsed(start)} sec")
|
13
|
+
Heavylog.finish_sidekiq
|
14
|
+
rescue Exception
|
15
|
+
logger.info("fail: #{elapsed(start)} sec")
|
16
|
+
raise
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def elapsed(start)
|
23
|
+
(::Process.clock_gettime(::Process::CLOCK_MONOTONIC) - start).round(3)
|
24
|
+
end
|
25
|
+
|
26
|
+
def logger
|
27
|
+
Sidekiq.logger
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/lib/heavylog/version.rb
CHANGED
data/lib/heavylog.rb
CHANGED
@@ -6,6 +6,8 @@ require 'heavylog/log_subscriber'
|
|
6
6
|
require 'heavylog/middleware'
|
7
7
|
require 'heavylog/ordered_options'
|
8
8
|
require 'heavylog/request_logger'
|
9
|
+
require 'heavylog/sidekiq_logger'
|
10
|
+
require 'heavylog/sidekiq_exception_handler'
|
9
11
|
|
10
12
|
module Heavylog
|
11
13
|
module_function
|
@@ -18,6 +20,7 @@ module Heavylog
|
|
18
20
|
self.application = app
|
19
21
|
patch_loggers
|
20
22
|
attach_to_action_controller
|
23
|
+
attach_to_sidekiq
|
21
24
|
setup_custom_payload
|
22
25
|
set_options
|
23
26
|
end
|
@@ -40,6 +43,16 @@ module Heavylog
|
|
40
43
|
Heavylog::LogSubscriber.attach_to :action_controller
|
41
44
|
end
|
42
45
|
|
46
|
+
def attach_to_sidekiq
|
47
|
+
return if !config.log_sidekiq
|
48
|
+
|
49
|
+
Sidekiq.configure_server do |config|
|
50
|
+
config.options[:job_logger] = SidekiqLogger
|
51
|
+
end
|
52
|
+
|
53
|
+
Sidekiq.error_handlers << SidekiqExceptionHandler.new
|
54
|
+
end
|
55
|
+
|
43
56
|
def setup_custom_payload
|
44
57
|
return unless config.custom_payload_method.respond_to?(:call)
|
45
58
|
|
@@ -85,6 +98,22 @@ module Heavylog
|
|
85
98
|
end
|
86
99
|
end
|
87
100
|
|
101
|
+
def log_sidekiq(jid, klass, args)
|
102
|
+
return if !config.enabled
|
103
|
+
|
104
|
+
RequestStore.store[:heavylog_request_id] = jid
|
105
|
+
RequestStore.store[:heavylog_request_start] = Time.now.iso8601
|
106
|
+
RequestStore.store[:heavylog_request_ip] = "127.0.0.1"
|
107
|
+
|
108
|
+
RequestStore.store[:heavylog_request_data] = {
|
109
|
+
controller: "SidekiqLogger",
|
110
|
+
action: klass,
|
111
|
+
args: args.to_s,
|
112
|
+
}
|
113
|
+
|
114
|
+
RequestStore.store[:heavylog_buffer] ||= StringIO.new
|
115
|
+
end
|
116
|
+
|
88
117
|
def finish
|
89
118
|
return if !config.enabled
|
90
119
|
|
@@ -102,6 +131,11 @@ module Heavylog
|
|
102
131
|
Heavylog.logger.send(Heavylog.log_level, formatted)
|
103
132
|
end
|
104
133
|
|
134
|
+
def finish_sidekiq
|
135
|
+
finish
|
136
|
+
RequestStore.store[:heavylog_buffer] = nil
|
137
|
+
end
|
138
|
+
|
105
139
|
def config
|
106
140
|
return OrderedOptions.new if !application
|
107
141
|
application.config.heavylog
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: heavylog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kristjan Rang
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-10-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -134,6 +134,8 @@ files:
|
|
134
134
|
- lib/heavylog/ordered_options.rb
|
135
135
|
- lib/heavylog/railtie.rb
|
136
136
|
- lib/heavylog/request_logger.rb
|
137
|
+
- lib/heavylog/sidekiq_exception_handler.rb
|
138
|
+
- lib/heavylog/sidekiq_logger.rb
|
137
139
|
- lib/heavylog/version.rb
|
138
140
|
homepage: https://github.com/krisrang/heavylog
|
139
141
|
licenses:
|