k_log 0.0.27 → 0.0.32
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/k_log/examples.rb +10 -0
- data/lib/k_log/log_formatter.rb +3 -1
- data/lib/k_log/log_structure.rb +67 -12
- data/lib/k_log/log_util.rb +23 -6
- data/lib/k_log/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0fa223a72a5c70dcb1c311f1da3c1e5f370c64847942a2e4e8dccf3abff05fd1
|
4
|
+
data.tar.gz: ab980569c01e1c99a99c157623f92a75d08a6af82163d929130f8bc1080658b2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f1fe198aee1f8dab3e7fad5676eb209abb8e034162b26a52edc36c107dfc7606f1db5f18bbbafa8eaf120499ebc18cea302eac8aa6acadd3f2debf01dc23c1fd
|
7
|
+
data.tar.gz: 62f28c9a49847aaec1896759ff3ab0d9c367e84ff67c4ef80baa018d32bd25ac0cc9e4c30704d3aba9a660b38443ced2e4f6ba4418e065e6adc8d68853a3c177
|
data/lib/k_log/examples.rb
CHANGED
@@ -91,6 +91,16 @@ module KLog
|
|
91
91
|
rescue StandardError => e
|
92
92
|
log.exception(e)
|
93
93
|
end
|
94
|
+
begin
|
95
|
+
raise 'Here is an error'
|
96
|
+
rescue StandardError => e
|
97
|
+
log.exception(e, style: :message)
|
98
|
+
end
|
99
|
+
begin
|
100
|
+
raise 'Here is an error'
|
101
|
+
rescue StandardError => e
|
102
|
+
log.exception(e, style: :short)
|
103
|
+
end
|
94
104
|
end
|
95
105
|
# rubocop:enable Metrics/AbcSize, Metrics/MethodLength
|
96
106
|
|
data/lib/k_log/log_formatter.rb
CHANGED
@@ -20,8 +20,10 @@ module KLog
|
|
20
20
|
|
21
21
|
msg = msg.is_a?(String) ? msg : msg.inspect
|
22
22
|
|
23
|
+
# "%<time>s %<severity>s %<message>s\n", {
|
24
|
+
|
23
25
|
format(
|
24
|
-
"%<
|
26
|
+
"%<severity>s %<message>s\n", {
|
25
27
|
time: Time.now.strftime('%d|%H:%M:%S'),
|
26
28
|
severity: severity_value,
|
27
29
|
message: msg
|
data/lib/k_log/log_structure.rb
CHANGED
@@ -11,6 +11,8 @@ module KLog
|
|
11
11
|
attr_reader :heading
|
12
12
|
attr_reader :heading_type
|
13
13
|
attr_reader :line_width
|
14
|
+
attr_reader :key_width
|
15
|
+
attr_reader :show_array_count
|
14
16
|
attr_reader :graph
|
15
17
|
attr_reader :formatter
|
16
18
|
attr_reader :convert_data_to
|
@@ -32,7 +34,9 @@ module KLog
|
|
32
34
|
# @option opts [String] :heading Log heading using logger.dynamic_heading
|
33
35
|
# @option opts [String] :heading_type :heading, :subheading, :section_heading
|
34
36
|
# @option opts [String] :line_width line width defaults to 80, but can be overridden here
|
37
|
+
# @option opts [String] :key_width key width defaults to 30, but can be overridden here
|
35
38
|
# @option opts [String] :formatter is a complex configuration for formatting different data within the structure
|
39
|
+
# @option opts [Symbol] :convert_data_to (:raw, open_struct)
|
36
40
|
def initialize(opts)
|
37
41
|
@indent = opts[:indent] || ' '
|
38
42
|
@title = opts[:title]
|
@@ -48,6 +52,8 @@ module KLog
|
|
48
52
|
@convert_data_to = opts[:convert_data_to] || :raw # by default leave data as is
|
49
53
|
|
50
54
|
@line_width = opts[:line_width] || 80
|
55
|
+
@key_width = opts[:key_width] || 30
|
56
|
+
@show_array_count = opts[:show_array_count] || false
|
51
57
|
@output_as = opts[:output_as] || [:console]
|
52
58
|
@output_as = [@output_as] unless @output_as.is_a?(Array)
|
53
59
|
@output_file = opts[:output_file]
|
@@ -102,12 +108,19 @@ module KLog
|
|
102
108
|
|
103
109
|
# format_config = @formatter[:_root] if format_config.nil? && @recursion_depth.zero?
|
104
110
|
|
111
|
+
def data_enumerator(data)
|
112
|
+
return data.attributes if data.respond_to?(:attributes)
|
113
|
+
|
114
|
+
data
|
115
|
+
end
|
116
|
+
|
105
117
|
def log_data(data)
|
106
|
-
data.each_pair do |k, v|
|
118
|
+
data_enumerator(data).each_pair do |k, v|
|
107
119
|
key = k.is_a?(String) ? k.to_sym : k
|
108
120
|
|
109
121
|
graph_path.push(key)
|
110
|
-
@graph_node = GraphNode.for(graph, graph_path)
|
122
|
+
@graph_node = GraphNode.for(self, graph, graph_path)
|
123
|
+
# @graph_node.debug
|
111
124
|
# l.kv 'key', "#{key.to_s.ljust(15)}#{graph_node.skip?.to_s.ljust(6)}#{@recursion_depth}"
|
112
125
|
|
113
126
|
if graph_node.skip?
|
@@ -116,21 +129,26 @@ module KLog
|
|
116
129
|
next
|
117
130
|
end
|
118
131
|
|
132
|
+
# xxxx.pry if graph_node.pry_at?(:before_value) # 'puts xmen'
|
133
|
+
|
119
134
|
value = graph_node.transform? ? graph_node.transform(v) : v
|
120
135
|
|
121
|
-
|
122
|
-
|
136
|
+
# xxxx.pry if graph_node.pry_at?(:after_value) # 'puts xmen'
|
137
|
+
if value.is_a?(OpenStruct) || value.respond_to?(:attributes)
|
138
|
+
|
123
139
|
# l.kv 'go', 'open struct ->'
|
140
|
+
# xxxx.pry if graph_node.pry_at?(:before_structure) # 'puts xmen'
|
124
141
|
log_structure(key, value)
|
125
142
|
# l.kv 'go', 'open struct <-'
|
126
|
-
|
143
|
+
elsif value.is_a?(Array)
|
127
144
|
# l.kv 'go', 'array ->'
|
128
145
|
log_array(key, value)
|
129
146
|
# l.kv 'go', 'array <-'
|
130
147
|
else
|
131
148
|
# l.kv 'go', 'value ->'
|
149
|
+
# xxxx.pry if graph_node.pry_at?(:before_kv) # 'puts xmen'
|
132
150
|
log_heading(graph_node.heading, graph_node.heading_type) if graph_node.heading
|
133
|
-
add_line KLog::LogHelper.kv
|
151
|
+
add_line KLog::LogHelper.kv("#{@indent_label}#{key}", value, key_width)
|
134
152
|
# l.kv 'go', 'value <-'
|
135
153
|
end
|
136
154
|
|
@@ -155,13 +173,15 @@ module KLog
|
|
155
173
|
end
|
156
174
|
|
157
175
|
def log_array(key, array)
|
158
|
-
#
|
176
|
+
# xxxx.pry if graph_node.pry_at?(:before_array) # 'puts xmen'
|
159
177
|
|
160
178
|
items = array.clone
|
161
179
|
items.select! { |item| graph_node.filter(item) } if graph_node.filter?
|
162
180
|
items = items.take(graph_node.take) if graph_node.limited?
|
163
181
|
items.sort!(&graph_node.sort) if graph_node.sort?
|
164
182
|
|
183
|
+
# xxxx.pry if graph_node.pry_at?(:before_array_print) # 'puts xmen'
|
184
|
+
|
165
185
|
return if items.length.zero? && graph_node.skip_empty?
|
166
186
|
|
167
187
|
log_heading(graph_node.heading, graph_node.heading_type) if graph_node.heading
|
@@ -170,9 +190,12 @@ module KLog
|
|
170
190
|
add_line KLog::LogHelper.kv "#{@indent_label}#{key}", items.map(&:to_s).join(', ')
|
171
191
|
else
|
172
192
|
table_print items, tp_columns(items)
|
193
|
+
|
194
|
+
# NEED SUPPORT FOR A configured ARRAY COUNT with width and label
|
195
|
+
add_line KLog::LogHelper.kv key.to_s, items.count if show_array_count
|
173
196
|
end
|
174
|
-
rescue StandardError
|
175
|
-
|
197
|
+
rescue StandardError => e
|
198
|
+
KLog.logger.exception(e)
|
176
199
|
end
|
177
200
|
|
178
201
|
def table_print(items, columns)
|
@@ -228,6 +251,7 @@ module KLog
|
|
228
251
|
def render_output
|
229
252
|
puts content if output_as.include?(:console)
|
230
253
|
File.write(output_file, clean_content) if output_as.include?(:file) && output_file
|
254
|
+
# content
|
231
255
|
end
|
232
256
|
|
233
257
|
# convert_data_to: :open_struct
|
@@ -304,6 +328,7 @@ module KLog
|
|
304
328
|
end
|
305
329
|
|
306
330
|
class GraphNode
|
331
|
+
attr_reader :log_structure
|
307
332
|
attr_accessor :config
|
308
333
|
|
309
334
|
class << self
|
@@ -311,7 +336,7 @@ module KLog
|
|
311
336
|
@null ||= OpenStruct.new
|
312
337
|
end
|
313
338
|
|
314
|
-
def for(graph, graph_path)
|
339
|
+
def for(log_structure, graph, graph_path)
|
315
340
|
# node_config = graph_path.inject(graph, :send) # (uses deep nesting, but fails when nil is returned) https://stackoverflow.com/questions/15862455/ruby-nested-send
|
316
341
|
# node.nil? ? null : node.send(name) || null
|
317
342
|
node_config = graph_path.reduce(graph) do |node, name|
|
@@ -321,12 +346,14 @@ module KLog
|
|
321
346
|
|
322
347
|
result
|
323
348
|
end
|
349
|
+
# puts node_config
|
324
350
|
|
325
|
-
new(node_config)
|
351
|
+
new(log_structure, node_config)
|
326
352
|
end
|
327
353
|
end
|
328
354
|
|
329
|
-
def initialize(config)
|
355
|
+
def initialize(log_structure, config)
|
356
|
+
@log_structure = log_structure
|
330
357
|
@config = config || OpenStruct.new
|
331
358
|
end
|
332
359
|
|
@@ -390,10 +417,38 @@ module KLog
|
|
390
417
|
config.skip == true
|
391
418
|
end
|
392
419
|
|
420
|
+
# Useful in complex debug scenarios
|
421
|
+
def pry_at
|
422
|
+
config.pry_at || []
|
423
|
+
end
|
424
|
+
|
425
|
+
def pry_at?(section)
|
426
|
+
pry_at.include?(section)
|
427
|
+
end
|
428
|
+
|
393
429
|
# Skip empty array node (my be useful for other nodes, but not yet)
|
394
430
|
def skip_empty?
|
395
431
|
config.skip_empty == true
|
396
432
|
end
|
433
|
+
|
434
|
+
def show_array_count
|
435
|
+
log_structure.show_array_count
|
436
|
+
end
|
437
|
+
|
438
|
+
def debug
|
439
|
+
l = KLog::LogUtil.new(KLog.logger)
|
440
|
+
l.kv('columns', columns) if columns
|
441
|
+
l.kv('heading', heading) if heading
|
442
|
+
l.kv('heading_type', heading_type) if heading_type
|
443
|
+
l.kv('filter?', filter?)
|
444
|
+
l.kv('take', take)
|
445
|
+
l.kv('limited?', limited?)
|
446
|
+
l.kv('sort?', sort?)
|
447
|
+
l.kv('sort', sort)
|
448
|
+
l.kv('skip?', skip?)
|
449
|
+
l.kv('pry_at', pry_at)
|
450
|
+
l.kv('skip_empty?', skip_empty?)
|
451
|
+
end
|
397
452
|
end
|
398
453
|
end
|
399
454
|
end
|
data/lib/k_log/log_util.rb
CHANGED
@@ -148,7 +148,7 @@ module KLog
|
|
148
148
|
# @option opts [String] :heading_type :heading, :subheading, :section_heading
|
149
149
|
# @option opts [Boolean] :skip_array Arrays items can be skipped
|
150
150
|
def structure(data, **opts)
|
151
|
-
structure = LogStructure.new(
|
151
|
+
structure = LogStructure.new(opts)
|
152
152
|
structure.log(data)
|
153
153
|
end
|
154
154
|
|
@@ -195,14 +195,31 @@ module KLog
|
|
195
195
|
alias ostruct open_struct
|
196
196
|
alias o open_struct
|
197
197
|
|
198
|
-
|
199
|
-
|
198
|
+
# Examples
|
199
|
+
# log.exception(e)
|
200
|
+
# log.exception(e, style: :message)
|
201
|
+
# log.exception(e, style: :short)
|
202
|
+
def exception(exception, style: :long, method_info: nil)
|
203
|
+
line unless style == :message
|
204
|
+
|
205
|
+
@logger.error(KLog::LogHelper.bg_red(exception.message))
|
206
|
+
@logger.info([method_info.owner.name, method_info.name].join('#')) if method_info
|
207
|
+
|
208
|
+
case style
|
209
|
+
when :short
|
210
|
+
trace_items = exception.backtrace.select { |row| row.start_with?(Dir.pwd) }
|
211
|
+
when :long
|
212
|
+
trace_items = exception.backtrace
|
213
|
+
else
|
214
|
+
trace_items = []
|
215
|
+
end
|
200
216
|
|
201
|
-
@logger.info(KLog::LogHelper.bg_red(exception.message))
|
202
217
|
|
203
|
-
|
218
|
+
trace_items = trace_items.map { |row| row.start_with?(Dir.pwd) ? KLog::LogHelper.yellow(row) : KLog::LogHelper.red(row) }
|
204
219
|
|
205
|
-
|
220
|
+
@logger.info(KLog::LogHelper.yellow(trace_items.join("\n"))) if trace_items.length.positive?
|
221
|
+
|
222
|
+
line unless style == :message
|
206
223
|
end
|
207
224
|
|
208
225
|
#----------------------------------------------------------------------------------------------------
|
data/lib/k_log/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: k_log
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.32
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Cruwys
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-11-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: k_util
|