k_log 0.0.16 → 0.0.17

Sign up to get free protection for your applications and to get access to all the features.
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