rf_logger 0.3.2 → 0.3.3
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/rf_logger/active_record/logger.rb +1 -2
- data/lib/rf_logger/rails/key_value_tagged_logging.rb +1 -1
- data/lib/rf_logger/rails/rails_compatibility.rb +1 -1
- data/lib/rf_logger/request/request_tags.rb +11 -0
- data/lib/rf_logger/sequel/logger.rb +2 -2
- data/lib/rf_logger/version.rb +1 -1
- data/spec/lib/rf_logger/active_record/logger_spec.rb +14 -0
- data/spec/lib/rf_logger/sequel/logger_spec.rb +34 -2
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c98893ac9f0eafd8301166b30dcf4457b36d5b1f
|
4
|
+
data.tar.gz: d502d55018ded1e967701994c50f76d51dda5e46
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5874f7a53ef1009b1ccb3fae87e9e6344857c35f16ada5e43c19f08a0d2a5f5e6a98593d9bd52f02dae5e3616f62f508d09679d4fd3aae6260e407793c77d562
|
7
|
+
data.tar.gz: a34a4b5e487697bdbb8898fb8aab7924b62060b3694c673f12b698b3172e56680c06ba9d7a89b308ab8013080d25883e92a0739175ca403627aff70b439665e9
|
@@ -20,11 +20,10 @@ module RfLogger
|
|
20
20
|
:level => RfLogger::LEVELS.index(level.to_sym),
|
21
21
|
:action => entry[:action],
|
22
22
|
:actor => entry[:actor],
|
23
|
-
:metadata => entry[:metadata] || {},
|
23
|
+
:metadata => merge_request_to_metadata(entry[:metadata] || {}),
|
24
24
|
:target_type => entry[:target_type],
|
25
25
|
:target_id => entry[:target_id],
|
26
26
|
}
|
27
|
-
attributes[:metadata].merge!(request_tags: rf_logger_request_tags) unless rf_logger_request_tags.nil?
|
28
27
|
create(attributes)
|
29
28
|
end
|
30
29
|
end
|
@@ -53,6 +53,6 @@ require "rails/engine/railties"
|
|
53
53
|
|
54
54
|
class KeyValueKeyLogging < ::Rails::Railtie
|
55
55
|
initializer "rf_logging.add_log_tag_request_id" do |app|
|
56
|
-
app.config.log_tags = { request_id: :uuid }
|
56
|
+
app.config.log_tags = { request_id: :uuid, remote_ip: :remote_ip }
|
57
57
|
end
|
58
58
|
end
|
@@ -21,7 +21,7 @@ module RfLogger
|
|
21
21
|
attr_reader :rails_version
|
22
22
|
|
23
23
|
def rails_not_support_message
|
24
|
-
return unless ENV["RF_LOGGER_LOAD_DEBUG"]
|
24
|
+
return unless ENV["RF_LOGGER_LOAD_DEBUG"] == "true"
|
25
25
|
puts "RfLogger: These patches change Rails private methods and are only known to work for Rails #{MIN} through #{MAX}. Current version #{rails_version}"
|
26
26
|
end
|
27
27
|
|
@@ -5,5 +5,16 @@ module RfLogger
|
|
5
5
|
def rf_logger_request_tags
|
6
6
|
Thread.current.get_inheritable_attribute(:rf_logger_request_tags)
|
7
7
|
end
|
8
|
+
|
9
|
+
def rf_logger_request_tags?
|
10
|
+
rf_logger_request_tags.present? && rf_logger_request_tags.reject { |_, v| v.nil? }.count > 0
|
11
|
+
end
|
12
|
+
|
13
|
+
def merge_request_to_metadata(metadata)
|
14
|
+
if metadata.is_a?(Hash) && rf_logger_request_tags?
|
15
|
+
metadata.merge!(request_tags: rf_logger_request_tags)
|
16
|
+
end
|
17
|
+
metadata
|
18
|
+
end
|
8
19
|
end
|
9
20
|
end
|
@@ -26,8 +26,7 @@ module RfLogger
|
|
26
26
|
def add(level, entry)
|
27
27
|
entry[:level] = RfLogger::LEVELS.index(level.to_sym)
|
28
28
|
entry[:actor] = entry[:actor] || ''
|
29
|
-
entry[:metadata] = entry[:metadata] || {}
|
30
|
-
entry[:metadata].merge!(request_tags: rf_logger_request_tags) unless rf_logger_request_tags.nil?
|
29
|
+
entry[:metadata] = merge_request_to_metadata(entry[:metadata] || {})
|
31
30
|
entry[:created_at] = Time.now
|
32
31
|
create(entry)
|
33
32
|
end
|
@@ -39,6 +38,7 @@ module RfLogger
|
|
39
38
|
end
|
40
39
|
|
41
40
|
def metadata=(metadata_hash)
|
41
|
+
metadata_hash = self.class.merge_request_to_metadata(metadata_hash)
|
42
42
|
metadata_as_json = metadata_hash.nil? ? nil : metadata_hash.to_json
|
43
43
|
self[:metadata] = metadata_as_json
|
44
44
|
end
|
data/lib/rf_logger/version.rb
CHANGED
@@ -44,6 +44,20 @@ describe RfLogger::ActiveRecord::Logger do
|
|
44
44
|
)
|
45
45
|
end
|
46
46
|
end
|
47
|
+
|
48
|
+
context "when metadata is not a hash" do
|
49
|
+
it "creates new Log object with level = #{level}" do
|
50
|
+
described_class.send(level.to_sym, action: 'log me', metadata: "not a hash")
|
51
|
+
expect(described_class).to have_received(:create).with(
|
52
|
+
:level => RfLogger::LEVELS.index(level.to_sym),
|
53
|
+
:action => 'log me',
|
54
|
+
:actor => nil,
|
55
|
+
:metadata => "not a hash",
|
56
|
+
:target_type => nil,
|
57
|
+
:target_id => nil,
|
58
|
+
)
|
59
|
+
end
|
60
|
+
end
|
47
61
|
end
|
48
62
|
end
|
49
63
|
end
|
@@ -82,6 +82,20 @@ describe RfLogger::Sequel::Logger do
|
|
82
82
|
end
|
83
83
|
end
|
84
84
|
|
85
|
+
context "when rf_logger_request_tags has keys but nil values" do
|
86
|
+
it "return a metadata with no request_tags key" do
|
87
|
+
allow(described_class).to receive(:rf_logger_request_tags).and_return({ key_with_no_value: nil })
|
88
|
+
|
89
|
+
expect(described_class).to receive(:create).with(
|
90
|
+
({ :level => 1,
|
91
|
+
:actor => "",
|
92
|
+
:metadata => { },
|
93
|
+
:created_at => "NOW" })
|
94
|
+
)
|
95
|
+
described_class.add(:info, {})
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
85
99
|
it 'sets actor to blank string if not provided' do
|
86
100
|
expect(described_class).to receive(:create).with(
|
87
101
|
:actor => '',
|
@@ -104,12 +118,30 @@ describe RfLogger::Sequel::Logger do
|
|
104
118
|
|
105
119
|
described_class.add(:info, { :action => 'palpitate' })
|
106
120
|
end
|
121
|
+
|
122
|
+
it 'return passed in value when metadata is not a hash' do
|
123
|
+
expect(described_class).to receive(:create).with(
|
124
|
+
:actor => '',
|
125
|
+
:action => 'palpitate',
|
126
|
+
:metadata => "not a hash",
|
127
|
+
:created_at => 'NOW',
|
128
|
+
:level => RfLogger::LEVELS.index(:info)
|
129
|
+
)
|
130
|
+
|
131
|
+
described_class.add(:info, { :action => 'palpitate', :metadata => "not a hash" })
|
132
|
+
end
|
107
133
|
end
|
108
134
|
|
109
135
|
describe "#metadata" do
|
110
136
|
it 'returns a hash for metadata even though it is stored as JSON' do
|
111
|
-
subject.metadata = {'foo' => 'bar'}
|
112
|
-
expect(subject.metadata).to eq({'foo' => 'bar'})
|
137
|
+
subject.metadata = { 'foo' => 'bar' }
|
138
|
+
expect(subject.metadata).to eq({ 'foo' => 'bar', "request_tags" => { "request_id" => "909090" } })
|
139
|
+
end
|
140
|
+
|
141
|
+
it 'return a hash without request_tags when values are nil' do
|
142
|
+
allow(described_class).to receive(:rf_logger_request_tags).and_return({ key_with_no_value: nil })
|
143
|
+
subject.metadata = { 'foo' => 'bar' }
|
144
|
+
expect(subject.metadata).to eq({ 'foo' => 'bar' })
|
113
145
|
end
|
114
146
|
|
115
147
|
it 'returns nil if column is null' do
|