k_log 0.0.16 → 0.0.17

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: ba63dfa4daf9b11166e15ebd5b0f0204a1ff4886c9431a252e1ff93a5c2ce343
4
- data.tar.gz: f4ede795aeca562e9ab6ab91329fcd9bc4657fc7e9ad3338bf748d15c24e1af6
3
+ metadata.gz: c4551d1ecfce7599e235a86b566c53b9f35a117b9bf6ab1f9ea6a3b4805faeff
4
+ data.tar.gz: 633eba7eea7ed71275ed144230392882f88b48697ecc48c054cf12cbcee1a1bb
5
5
  SHA512:
6
- metadata.gz: 01dd4e8a183ec4aaa3511cd2787f65dcef0cf36ac20b6bf1159a8e920206776f7af2fed28bfd7aa59c8cf83f8d831c63be3040133f2c885f3e56483340f7e05f
7
- data.tar.gz: 8aa357235342a2ce4a41d0aa37ee753d3dd5abcfc7ce50b890f958fdc3ad965949ddaf85c89f0e2c2bee3eec55aaa9c6074ee5843a2394acf3f0ba1c6d58400a
6
+ metadata.gz: 68d4bb47ff1833c00a9a953744de24c04ae6d6418f4cf62587b24a9ac9b8ef589f3c2e4fd64a933e7a9c29d5a2bb031b40a28a2d7aa0c4b2375bc24e7d180246
7
+ data.tar.gz: 6dae6d21f7f1a229018d796bfd1b2a92f6e9cd93017d7e6f337772b952fa9248a19a60b4feed7c74217fd86d85299d55eb9e5e8f41a650efb822595fd325c32d
data/lib/k_log.rb CHANGED
@@ -1,39 +1,39 @@
1
- # frozen_string_literal: true
2
-
3
- require 'logger'
4
- require 'table_print'
5
- require 'k_log/version'
6
- require 'k_log/log_formatter'
7
- require 'k_log/log_helper'
8
- require 'k_log/log_util'
9
- require 'k_log/logging'
10
-
11
- # Simple console log helpers
12
- module KLog
13
- # raise KLog::Error, 'Sample message'
14
- class Error < StandardError; end
15
-
16
- class << self
17
- attr_accessor :logger
18
-
19
- def default_logger
20
- return @default_logger if defined? @default_logger
21
-
22
- @default_logger = begin
23
- logger = Logger.new($stdout)
24
- logger.level = Logger::DEBUG
25
- logger.formatter = KLog::LogFormatter.new
26
- KLog::LogUtil.new(logger)
27
- end
28
- end
29
- end
30
- end
31
-
32
- KLog.logger = KLog.default_logger
33
-
34
- if ENV['KLUE_DEBUG']&.to_s&.downcase == 'true'
35
- namespace = 'KLog::Version'
36
- file_path = $LOADED_FEATURES.find { |f| f.include?('k_log/version') }
37
- version = KLog::VERSION.ljust(9)
38
- puts "#{namespace.ljust(40)} : #{version.ljust(9)} : #{file_path}"
39
- end
1
+ # frozen_string_literal: true
2
+
3
+ require 'logger'
4
+ require 'table_print'
5
+ require 'k_log/version'
6
+ require 'k_log/log_formatter'
7
+ require 'k_log/log_helper'
8
+ require 'k_log/log_util'
9
+ require 'k_log/logging'
10
+
11
+ # Simple console log helpers
12
+ module KLog
13
+ # raise KLog::Error, 'Sample message'
14
+ class Error < StandardError; end
15
+
16
+ class << self
17
+ attr_accessor :logger
18
+
19
+ def default_logger
20
+ return @default_logger if defined? @default_logger
21
+
22
+ @default_logger = begin
23
+ logger = Logger.new($stdout)
24
+ logger.level = Logger::DEBUG
25
+ logger.formatter = KLog::LogFormatter.new
26
+ KLog::LogUtil.new(logger)
27
+ end
28
+ end
29
+ end
30
+ end
31
+
32
+ KLog.logger = KLog.default_logger
33
+
34
+ if ENV['KLUE_DEBUG']&.to_s&.downcase == 'true'
35
+ namespace = 'KLog::Version'
36
+ file_path = $LOADED_FEATURES.find { |f| f.include?('k_log/version') }
37
+ version = KLog::VERSION.ljust(9)
38
+ puts "#{namespace.ljust(35)} : #{version.ljust(9)} : #{file_path}"
39
+ end
@@ -1,374 +1,381 @@
1
- # frozen_string_literal: true
2
-
3
- # Format Logger Util provides static helper methods that delegate responsibility
4
- # to the underlying Format Logger, you can use the Util instead Rails.logger so
5
- # that you have access to IDE intellisense around available methods and so you
6
- # can use the same logger calls from controllers/models which normally have
7
- # access to to a logger variable and services which do not have access to a
8
- # logger variable
9
- #
10
- # I usually alias the call to LogUtil by doing L = LogUtil
11
-
12
- # require_relative 'format_logger'
13
- # require_relative 'format_logger_helper'
14
-
15
- module KLog
16
- # Simple console log helpers
17
- class LogUtil
18
- def initialize(logger)
19
- @logger = logger
20
- end
21
-
22
- # include ActiveSupport::LoggerThreadSafeLevel
23
- # include LoggerSilence
24
-
25
- #----------------------------------------------------------------------------------------------------
26
- # Standard Accessors that are on the standard rails Logger
27
- #----------------------------------------------------------------------------------------------------
28
- def debug(value)
29
- @logger.debug(value)
30
- end
31
-
32
- def info(value)
33
- @logger.info(value)
34
- end
35
-
36
- def warn(value)
37
- @logger.warn(value)
38
- end
39
-
40
- def error(value)
41
- @logger.error(value)
42
- end
43
-
44
- def fatal(value)
45
- @logger.fatal(value)
46
- end
47
-
48
- #----------------------------------------------------------------------------------------------------
49
- # Helper Log output Methods
50
- #----------------------------------------------------------------------------------------------------
51
-
52
- # Write a Key/Value Pair
53
- def kv(key, value, key_width = 30)
54
- message = LogHelper.kv(key, value, key_width)
55
- @logger.info(message)
56
- end
57
-
58
- # Write a progress point, progress will update on it's own
59
- def progress(pos = nil, section = nil)
60
- message = LogHelper.progress(pos, section)
61
- # @logger.debug(message)
62
- @logger.info(message)
63
-
64
- LogHelper.progress_position
65
- end
66
-
67
- # prints out a line to the log
68
- def line(size = 70, character: '=')
69
- message = LogHelper.line(size, character)
70
-
71
- @logger.info(message)
72
- end
73
-
74
- def heading(heading, size = 70)
75
- lines = LogHelper.heading(heading, size)
76
- info_multi_lines(lines)
77
- end
78
-
79
- def subheading(heading, size = 70)
80
- lines = LogHelper.subheading(heading, size)
81
-
82
- info_multi_lines(lines)
83
- end
84
-
85
- # A section heading
86
- #
87
- # example:
88
- # [ I am a heading ]----------------------------------------------------
89
- def section_heading(heading, size = 70)
90
- heading = LogHelper.section_heading(heading, size)
91
-
92
- info(heading)
93
- end
94
-
95
- def block(messages, include_line: true, title: nil)
96
- lines = LogHelper.block(messages, include_line: include_line, title: title)
97
-
98
- info_multi_lines(lines)
99
- end
100
-
101
- # # :sql_array should be an array with SQL and values or with SQL and Hash
102
- # # example:
103
- # # KLog.logger.sql(["name = :name and group_id = :value OR parent_id = :value", name: "foo'bar", value: 4])
104
- # # KLog.logger.sql([sql_exact_match_skills_in_use, {names: self.segments_container.segment_values}])
105
- # def sql(sql_array)
106
- # value = ActiveRecord::Base.send(:sanitize_sql_array, sql_array)
107
-
108
- # info(value)
109
- # end
110
-
111
- def yaml(data, is_line: true)
112
- require 'yaml'
113
- line if is_line
114
-
115
- @logger.info(data.to_yaml) if data.is_a?(Hash)
116
-
117
- @logger.info(data.marshal_dump.to_yaml) if data.is_a?(OpenStruct)
118
-
119
- if data.is_a? Array
120
- data.each do |d|
121
- @logger.info(d.to_yaml)
122
- end
123
- end
124
-
125
- line if is_line
126
- end
127
-
128
- def json(data)
129
- @logger.info(JSON.pretty_generate(data))
130
- end
131
- alias j json
132
-
133
- # rubocop:disable Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity, Metrics/AbcSize
134
- def open_struct(data, indent = '', **opts)
135
- data.each_pair do |key, value|
136
- case value
137
- when OpenStruct
138
- if value['rows'].is_a?(Array)
139
- # KLog.logger.subheading(key)
140
- opts[:subheading] = key
141
- open_struct(value, indent, **opts)
142
- opts.delete(:subheading)
143
- else
144
- KLog.logger.kv "#{indent}#{key}", ''
145
- indent = "#{indent} "
146
- open_struct(value, indent, **opts)
147
- indent = indent.chomp(' ')
148
- end
149
- when Array
150
- next unless opts[:skip_array].nil?
151
-
152
- puts LogHelper.section_heading(opts[:subheading], 88) unless opts[:subheading].nil?
153
-
154
- if value.length.positive?
155
- if value.first.is_a?(String)
156
- KLog.logger.kv "#{indent}#{key}", value.join(', ')
157
- else
158
- tp value, value.first.to_h.keys
159
- end
160
- end
161
- else
162
- KLog.logger.kv "#{indent}#{key}", value
163
- end
164
- end
165
- nil
166
- end
167
- # rubocop:enable Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity, Metrics/AbcSize
168
- alias ostruct open_struct
169
- alias o open_struct
170
-
171
- def exception(exception)
172
- line
173
-
174
- @logger.info(exception.message)
175
- @logger.info(exception.backtrace.join("\n"))
176
-
177
- line
178
- end
179
-
180
- #----------------------------------------------------------------------------------------------------
181
- # Pretty Loggers
182
- #----------------------------------------------------------------------------------------------------
183
-
184
- # NOTE: using pretty_inspect is an existing namespace conflict
185
- # rubocop:disable Metrics/AbcSize
186
- def pretty_class(instance)
187
- c = instance.class
188
-
189
- line
190
-
191
- kv('Full Class', c.name)
192
- kv('Module', c.name.deconstantize)
193
- kv('Class', c.name.demodulize)
194
-
195
- source_location = c.instance_methods(false).map do |m|
196
- c.instance_method(m).source_location.first
197
- end.uniq
198
-
199
- begin
200
- kv('Source Location', source_location)
201
- rescue StandardError => e
202
- warn e
203
- end
204
-
205
- line
206
- end
207
- # rubocop:enable Metrics/AbcSize
208
-
209
- # NOTE: using pretty_inspect is an existing namespace conflict
210
- def pretty_params(params)
211
- line
212
-
213
- params.each do |k, v|
214
- if params[k].is_a?(Hash)
215
-
216
- params[k].each do |child_k, child_v|
217
- kv("#{k}[#{child_k}]", child_v)
218
- end
219
-
220
- else
221
- kv(k, v)
222
- end
223
- end
224
-
225
- line
226
- end
227
-
228
- def help_all_symbols
229
- # Produces a lot of data, need some sort of filter I think before this is useful
230
- Symbol.all_symbols.each do |s|
231
- info s
232
- # debug s
233
- end
234
- end
235
-
236
- def visual_compare_hashes(hash1, hash2)
237
- content1 = JSON.pretty_generate(hash1)
238
- content2 = JSON.pretty_generate(hash2)
239
-
240
- file1 = Tempfile.new('hash1')
241
- file1.write(content1)
242
- file1.close
243
-
244
- file2 = Tempfile.new('hash2')
245
- file2.write(content2)
246
- file2.close
247
-
248
- system "code --diff #{file1.path} #{file2.path}"
249
-
250
- # Provide enough time for vscode to open and display the files before deleting them
251
- sleep 1
252
-
253
- file1.unlink
254
- file2.unlink
255
- end
256
-
257
- #----------------------------------------------------------------------------------------------------
258
- # Internal Methods
259
- #----------------------------------------------------------------------------------------------------
260
-
261
- # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
262
- def self.examples
263
- examples_simple
264
- # examples_complex
265
- end
266
-
267
- def self.examples_simple
268
- KLog.logger.debug 'some debug message'
269
- KLog.logger.info 'some info message'
270
- KLog.logger.warn 'some warning message'
271
- KLog.logger.error 'some error message'
272
- KLog.logger.fatal 'some fatal message'
273
-
274
- KLog.logger.kv('First Name', 'David')
275
- KLog.logger.kv('Last Name', 'Cruwys')
276
- KLog.logger.kv('Age', 45)
277
- KLog.logger.kv('Sex', 'male')
278
-
279
- KLog.logger.heading('Heading')
280
- KLog.logger.subheading('Sub Heading')
281
- KLog.logger.section_heading('Section Heading')
282
- end
283
-
284
- def self.examples_complex
285
- KLog.logger.block ['Line 1', 12, 'Line 3', true, 'Line 5']
286
-
287
- KLog.logger.progress(0, 'Section 1')
288
- KLog.logger.progress
289
- KLog.logger.progress
290
- save_progress = KLog.logger.progress
291
-
292
- KLog.logger.progress(10, 'Section 2')
293
- KLog.logger.progress
294
- KLog.logger.progress
295
- KLog.logger.progress
296
-
297
- KLog.logger.progress(save_progress, 'Section 1')
298
- KLog.logger.progress
299
- KLog.logger.progress
300
- KLog.logger.progress
301
-
302
- KLog.logger.line
303
- KLog.logger.line(20)
304
- KLog.logger.line(20, character: '-')
305
-
306
- yaml1 = {}
307
- yaml1['title'] = 'Software Architect'
308
- yaml1['age'] = 45
309
- yaml1['name'] = 'David'
310
-
311
- yaml3 = {}
312
- yaml3['title'] = 'Developer'
313
- yaml3['age'] = 20
314
- yaml3['name'] = 'Jin'
315
-
316
- KLog.logger.yaml(yaml1)
317
-
318
- yaml2 = OpenStruct.new
319
- yaml2.title = 'Software Architect'
320
- yaml2.age = 45
321
- yaml2.name = 'David'
322
-
323
- KLog.logger.yaml(yaml2)
324
-
325
- mixed_yaml_array = [yaml1, yaml2]
326
-
327
- # This fails because we don't correctly pre-process the array
328
- KLog.logger.yaml(mixed_yaml_array)
329
-
330
- hash_yaml_array = [yaml1, yaml3]
331
-
332
- KLog.logger.yaml(hash_yaml_array)
333
-
334
- begin
335
- raise 'Here is an error'
336
- rescue StandardError => e
337
- KLog.logger.exception(e)
338
- end
339
- end
340
- # rubocop:enable Metrics/AbcSize, Metrics/MethodLength
341
-
342
- private
343
-
344
- def debug_multi_lines(lines)
345
- lines.each do |line|
346
- debug(line)
347
- end
348
- end
349
-
350
- def info_multi_lines(lines)
351
- lines.each do |line|
352
- info(line)
353
- end
354
- end
355
-
356
- def warn_multi_lines(lines)
357
- lines.each do |line|
358
- warn(line)
359
- end
360
- end
361
-
362
- def error_multi_lines(lines)
363
- lines.each do |line|
364
- error(line)
365
- end
366
- end
367
-
368
- def fatal_multi_lines(lines)
369
- lines.each do |line|
370
- fatal(line)
371
- end
372
- end
373
- end
374
- end
1
+ # frozen_string_literal: true
2
+
3
+ # Format Logger Util provides static helper methods that delegate responsibility
4
+ # to the underlying Format Logger, you can use the Util instead Rails.logger so
5
+ # that you have access to IDE intellisense around available methods and so you
6
+ # can use the same logger calls from controllers/models which normally have
7
+ # access to to a logger variable and services which do not have access to a
8
+ # logger variable
9
+ #
10
+ # I usually alias the call to LogUtil by doing L = LogUtil
11
+
12
+ # require_relative 'format_logger'
13
+ # require_relative 'format_logger_helper'
14
+
15
+ module KLog
16
+ # Simple console log helpers
17
+ class LogUtil
18
+ def initialize(logger)
19
+ @logger = logger
20
+ end
21
+
22
+ # include ActiveSupport::LoggerThreadSafeLevel
23
+ # include LoggerSilence
24
+
25
+ #----------------------------------------------------------------------------------------------------
26
+ # Standard Accessors that are on the standard rails Logger
27
+ #----------------------------------------------------------------------------------------------------
28
+ def debug(value)
29
+ @logger.debug(value)
30
+ end
31
+
32
+ def info(value)
33
+ @logger.info(value)
34
+ end
35
+
36
+ def warn(value)
37
+ @logger.warn(value)
38
+ end
39
+
40
+ def error(value)
41
+ @logger.error(value)
42
+ end
43
+
44
+ def fatal(value)
45
+ @logger.fatal(value)
46
+ end
47
+
48
+ #----------------------------------------------------------------------------------------------------
49
+ # Helper Log output Methods
50
+ #----------------------------------------------------------------------------------------------------
51
+
52
+ # Write a Key/Value Pair
53
+ # Need to change this to named_param
54
+ def kv(key, value, key_width = 30)
55
+ message = LogHelper.kv(key, value, key_width)
56
+ @logger.info(message)
57
+ end
58
+
59
+ # Write a progress point, progress will update on it's own
60
+ def progress(pos = nil, section = nil)
61
+ message = LogHelper.progress(pos, section)
62
+ # @logger.debug(message)
63
+ @logger.info(message)
64
+
65
+ LogHelper.progress_position
66
+ end
67
+
68
+ # prints out a line to the log
69
+ def line(size = 70, character: '=')
70
+ message = LogHelper.line(size, character)
71
+
72
+ @logger.info(message)
73
+ end
74
+
75
+ def heading(heading, size = 70)
76
+ lines = LogHelper.heading(heading, size)
77
+ info_multi_lines(lines)
78
+ end
79
+
80
+ def subheading(heading, size = 70)
81
+ lines = LogHelper.subheading(heading, size)
82
+
83
+ info_multi_lines(lines)
84
+ end
85
+
86
+ # A section heading
87
+ #
88
+ # example:
89
+ # [ I am a heading ]----------------------------------------------------
90
+ def section_heading(heading, size = 70)
91
+ heading = LogHelper.section_heading(heading, size)
92
+
93
+ info(heading)
94
+ end
95
+
96
+ def block(messages, include_line: true, title: nil)
97
+ lines = LogHelper.block(messages, include_line: include_line, title: title)
98
+
99
+ info_multi_lines(lines)
100
+ end
101
+
102
+ # # :sql_array should be an array with SQL and values or with SQL and Hash
103
+ # # example:
104
+ # # KLog.logger.sql(["name = :name and group_id = :value OR parent_id = :value", name: "foo'bar", value: 4])
105
+ # # KLog.logger.sql([sql_exact_match_skills_in_use, {names: self.segments_container.segment_values}])
106
+ # def sql(sql_array)
107
+ # value = ActiveRecord::Base.send(:sanitize_sql_array, sql_array)
108
+
109
+ # info(value)
110
+ # end
111
+
112
+ def yaml(data, is_line: true)
113
+ require 'yaml'
114
+ line if is_line
115
+
116
+ @logger.info(data.to_yaml) if data.is_a?(Hash)
117
+
118
+ @logger.info(data.marshal_dump.to_yaml) if data.is_a?(OpenStruct)
119
+
120
+ if data.is_a? Array
121
+ data.each do |d|
122
+ @logger.info(d.to_yaml)
123
+ end
124
+ end
125
+
126
+ line if is_line
127
+ end
128
+
129
+ def json(data)
130
+ @logger.info(JSON.pretty_generate(data))
131
+ end
132
+ alias j json
133
+
134
+ # rubocop:disable Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity, Metrics/AbcSize
135
+ def open_struct(data, indent = '', **opts)
136
+ data.each_pair do |key, value|
137
+ case value
138
+ when OpenStruct
139
+ if value['rows'].is_a?(Array)
140
+ # KLog.logger.subheading(key)
141
+ opts[:subheading] = key
142
+ open_struct(value, indent, **opts)
143
+ opts.delete(:subheading)
144
+ else
145
+ KLog.logger.kv "#{indent}#{key}", ''
146
+ indent = "#{indent} "
147
+ open_struct(value, indent, **opts)
148
+ indent = indent.chomp(' ')
149
+ end
150
+ when Array
151
+ next unless opts[:skip_array].nil?
152
+
153
+ puts LogHelper.section_heading(opts[:subheading], 88) unless opts[:subheading].nil?
154
+
155
+ if value.length.positive?
156
+ if value.first.is_a?(String)
157
+ KLog.logger.kv "#{indent}#{key}", value.join(', ')
158
+ else
159
+ tp value, value.first.to_h.keys
160
+ end
161
+ end
162
+ else
163
+ KLog.logger.kv "#{indent}#{key}", value
164
+ end
165
+ end
166
+ nil
167
+ end
168
+ # rubocop:enable Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity, Metrics/AbcSize
169
+ alias ostruct open_struct
170
+ alias o open_struct
171
+
172
+ def exception(exception)
173
+ line
174
+
175
+ @logger.info(exception.message)
176
+ @logger.info(exception.backtrace.join("\n"))
177
+
178
+ line
179
+ end
180
+
181
+ #----------------------------------------------------------------------------------------------------
182
+ # Pretty Loggers
183
+ #----------------------------------------------------------------------------------------------------
184
+
185
+ # NOTE: using pretty_inspect is an existing namespace conflict
186
+ # rubocop:disable Metrics/AbcSize
187
+ def pretty_class(instance)
188
+ c = instance.class
189
+
190
+ line
191
+
192
+ kv('Full Class', c.name)
193
+ kv('Module', c.name.deconstantize)
194
+ kv('Class', c.name.demodulize)
195
+
196
+ source_location = c.instance_methods(false).map do |m|
197
+ c.instance_method(m).source_location.first
198
+ end.uniq
199
+
200
+ begin
201
+ kv('Source Location', source_location)
202
+ rescue StandardError => e
203
+ warn e
204
+ end
205
+
206
+ line
207
+ end
208
+ # rubocop:enable Metrics/AbcSize
209
+
210
+ def kv_hash(hash)
211
+ hash.each do |key, value|
212
+ kv(key, value)
213
+ end
214
+ end
215
+
216
+ # NOTE: using pretty_inspect is an existing namespace conflict
217
+ def pretty_params(params)
218
+ line
219
+
220
+ params.each do |k, v|
221
+ if params[k].is_a?(Hash)
222
+
223
+ params[k].each do |child_k, child_v|
224
+ kv("#{k}[#{child_k}]", child_v)
225
+ end
226
+
227
+ else
228
+ kv(k, v)
229
+ end
230
+ end
231
+
232
+ line
233
+ end
234
+
235
+ def help_all_symbols
236
+ # Produces a lot of data, need some sort of filter I think before this is useful
237
+ Symbol.all_symbols.each do |s|
238
+ info s
239
+ # debug s
240
+ end
241
+ end
242
+
243
+ def visual_compare_hashes(hash1, hash2)
244
+ content1 = JSON.pretty_generate(hash1)
245
+ content2 = JSON.pretty_generate(hash2)
246
+
247
+ file1 = Tempfile.new('hash1')
248
+ file1.write(content1)
249
+ file1.close
250
+
251
+ file2 = Tempfile.new('hash2')
252
+ file2.write(content2)
253
+ file2.close
254
+
255
+ system "code --diff #{file1.path} #{file2.path}"
256
+
257
+ # Provide enough time for vscode to open and display the files before deleting them
258
+ sleep 1
259
+
260
+ file1.unlink
261
+ file2.unlink
262
+ end
263
+
264
+ #----------------------------------------------------------------------------------------------------
265
+ # Internal Methods
266
+ #----------------------------------------------------------------------------------------------------
267
+
268
+ # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
269
+ def self.examples
270
+ examples_simple
271
+ # examples_complex
272
+ end
273
+
274
+ def self.examples_simple
275
+ KLog.logger.debug 'some debug message'
276
+ KLog.logger.info 'some info message'
277
+ KLog.logger.warn 'some warning message'
278
+ KLog.logger.error 'some error message'
279
+ KLog.logger.fatal 'some fatal message'
280
+
281
+ KLog.logger.kv('First Name', 'David')
282
+ KLog.logger.kv('Last Name', 'Cruwys')
283
+ KLog.logger.kv('Age', 45)
284
+ KLog.logger.kv('Sex', 'male')
285
+
286
+ KLog.logger.heading('Heading')
287
+ KLog.logger.subheading('Sub Heading')
288
+ KLog.logger.section_heading('Section Heading')
289
+ end
290
+
291
+ def self.examples_complex
292
+ KLog.logger.block ['Line 1', 12, 'Line 3', true, 'Line 5']
293
+
294
+ KLog.logger.progress(0, 'Section 1')
295
+ KLog.logger.progress
296
+ KLog.logger.progress
297
+ save_progress = KLog.logger.progress
298
+
299
+ KLog.logger.progress(10, 'Section 2')
300
+ KLog.logger.progress
301
+ KLog.logger.progress
302
+ KLog.logger.progress
303
+
304
+ KLog.logger.progress(save_progress, 'Section 1')
305
+ KLog.logger.progress
306
+ KLog.logger.progress
307
+ KLog.logger.progress
308
+
309
+ KLog.logger.line
310
+ KLog.logger.line(20)
311
+ KLog.logger.line(20, character: '-')
312
+
313
+ yaml1 = {}
314
+ yaml1['title'] = 'Software Architect'
315
+ yaml1['age'] = 45
316
+ yaml1['name'] = 'David'
317
+
318
+ yaml3 = {}
319
+ yaml3['title'] = 'Developer'
320
+ yaml3['age'] = 20
321
+ yaml3['name'] = 'Jin'
322
+
323
+ KLog.logger.yaml(yaml1)
324
+
325
+ yaml2 = OpenStruct.new
326
+ yaml2.title = 'Software Architect'
327
+ yaml2.age = 45
328
+ yaml2.name = 'David'
329
+
330
+ KLog.logger.yaml(yaml2)
331
+
332
+ mixed_yaml_array = [yaml1, yaml2]
333
+
334
+ # This fails because we don't correctly pre-process the array
335
+ KLog.logger.yaml(mixed_yaml_array)
336
+
337
+ hash_yaml_array = [yaml1, yaml3]
338
+
339
+ KLog.logger.yaml(hash_yaml_array)
340
+
341
+ begin
342
+ raise 'Here is an error'
343
+ rescue StandardError => e
344
+ KLog.logger.exception(e)
345
+ end
346
+ end
347
+ # rubocop:enable Metrics/AbcSize, Metrics/MethodLength
348
+
349
+ private
350
+
351
+ def debug_multi_lines(lines)
352
+ lines.each do |line|
353
+ debug(line)
354
+ end
355
+ end
356
+
357
+ def info_multi_lines(lines)
358
+ lines.each do |line|
359
+ info(line)
360
+ end
361
+ end
362
+
363
+ def warn_multi_lines(lines)
364
+ lines.each do |line|
365
+ warn(line)
366
+ end
367
+ end
368
+
369
+ def error_multi_lines(lines)
370
+ lines.each do |line|
371
+ error(line)
372
+ end
373
+ end
374
+
375
+ def fatal_multi_lines(lines)
376
+ lines.each do |line|
377
+ fatal(line)
378
+ end
379
+ end
380
+ end
381
+ end
data/lib/k_log/version.rb CHANGED
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
-
3
- module KLog
4
- VERSION = '0.0.16'
5
- end
1
+ # frozen_string_literal: true
2
+
3
+ module KLog
4
+ VERSION = '0.0.17'
5
+ end
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.16
4
+ version: 0.0.17
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-04-05 00:00:00.000000000 Z
11
+ date: 2021-04-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: table_print