rails_semantic_logger 4.4.0 → 4.4.1
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c831151af372b8348f982154c5a02da3e3373f0156f36952dcebc421667f91fc
|
4
|
+
data.tar.gz: 82e796f801009b66c39daf81b9526d5be20f48ecf81cd5159a7d659ba64f0cdc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 564d2e2b9a0bdb7140dd37a9be1aaaccbeed5c06f60cd7c4c31a7d886502d0e77433da3887e8262b4d614752c8a7f2b677fc8be8d9796e8e8af772252c84c2e2
|
7
|
+
data.tar.gz: 1a22dc7a52079a3845a5453f85eafda8edda153166afc44fe973cbe02f4e5d5b0f145c8bd506da972afcf942b0f9ccbbc802c1c18aab20424d54fa37b3bef685
|
@@ -10,5 +10,126 @@ module ActiveJob
|
|
10
10
|
def tag_logger(*tags, &block)
|
11
11
|
logger.tagged(*tags, &block)
|
12
12
|
end
|
13
|
+
|
14
|
+
class LogSubscriber < ActiveSupport::LogSubscriber
|
15
|
+
def enqueue(event)
|
16
|
+
log_with_formatter event: event do |fmt|
|
17
|
+
"Enqueued #{fmt.job_info}"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def enqueue_at(event)
|
22
|
+
log_with_formatter event: event do |fmt|
|
23
|
+
"Enqueued #{fmt.job_info} at #{fmt.scheduled_at}"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def perform_start(event)
|
28
|
+
log_with_formatter event: event do |fmt|
|
29
|
+
"Performing #{fmt.job_info}"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def perform(event)
|
34
|
+
ex = event.payload[:exception_object]
|
35
|
+
if ex
|
36
|
+
logger.error ex
|
37
|
+
else
|
38
|
+
log_with_formatter event: event, log_duration: true do |fmt|
|
39
|
+
"Performed #{fmt.job_info} in #{event.duration.round(2)}ms"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
class EventFormatter
|
47
|
+
def initialize(event:, log_duration: false)
|
48
|
+
@event = event
|
49
|
+
@log_duration = log_duration
|
50
|
+
end
|
51
|
+
|
52
|
+
def job_info
|
53
|
+
"#{job.class.name} (Job ID: #{job.job_id}) to #{queue_name}"
|
54
|
+
end
|
55
|
+
|
56
|
+
def payload
|
57
|
+
{}.tap do |h|
|
58
|
+
h[:event_name] = event.name
|
59
|
+
h[:adapter] = adapter_name
|
60
|
+
h[:queue] = job.queue_name
|
61
|
+
h[:job_class] = job.class.name
|
62
|
+
h[:job_id] = job.job_id
|
63
|
+
h[:provider_job_id] = job.try(:provider_job_id) # Not available in Rails 4.2
|
64
|
+
h[:duration] = event.duration.round(2) if log_duration?
|
65
|
+
h[:arguments] = formatted_args
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def queue_name
|
70
|
+
adapter_name + "(#{job.queue_name})"
|
71
|
+
end
|
72
|
+
|
73
|
+
def scheduled_at
|
74
|
+
Time.at(event.payload[:job].scheduled_at).utc
|
75
|
+
end
|
76
|
+
|
77
|
+
private
|
78
|
+
|
79
|
+
attr_reader :event
|
80
|
+
|
81
|
+
def job
|
82
|
+
event.payload[:job]
|
83
|
+
end
|
84
|
+
|
85
|
+
def adapter_name
|
86
|
+
event.payload[:adapter].class.name.demodulize.remove('Adapter')
|
87
|
+
end
|
88
|
+
|
89
|
+
def formatted_args
|
90
|
+
JSON.pretty_generate(job.arguments.map { |arg| format(arg) })
|
91
|
+
end
|
92
|
+
|
93
|
+
def format(arg)
|
94
|
+
case arg
|
95
|
+
when Hash
|
96
|
+
arg.transform_values { |value| format(value) }
|
97
|
+
when Array
|
98
|
+
arg.map { |value| format(value) }
|
99
|
+
when GlobalID::Identification
|
100
|
+
begin
|
101
|
+
arg.to_global_id
|
102
|
+
rescue StandardError
|
103
|
+
arg
|
104
|
+
end
|
105
|
+
else
|
106
|
+
arg
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
def log_duration?
|
111
|
+
@log_duration
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
def log_with_formatter(**kw_args)
|
116
|
+
fmt = EventFormatter.new(**kw_args)
|
117
|
+
msg = yield fmt
|
118
|
+
logger.info msg, fmt.payload
|
119
|
+
end
|
120
|
+
|
121
|
+
def logger
|
122
|
+
ActiveJob::Base.logger
|
123
|
+
end
|
124
|
+
end
|
13
125
|
end
|
14
126
|
end
|
127
|
+
|
128
|
+
if defined?(ActiveSupport::Notifications)
|
129
|
+
ActiveSupport::Notifications.unsubscribe('perform_start.active_job')
|
130
|
+
ActiveSupport::Notifications.unsubscribe('perform.active_job')
|
131
|
+
ActiveSupport::Notifications.unsubscribe('enqueue_at.active_job')
|
132
|
+
ActiveSupport::Notifications.unsubscribe('enqueue.active_job')
|
133
|
+
|
134
|
+
ActiveJob::Logging::LogSubscriber.attach_to :active_job
|
135
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_semantic_logger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.4.
|
4
|
+
version: 4.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Reid Morrison
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-04-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|