ruby_smart-simple_logger 1.1.0 → 1.2.0

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: 8cc72f952c5cfb9d1a5e2fca3ff7ae6d8b697b89fef74faa4a8a6dcf20db61ce
4
- data.tar.gz: 2649fb1c0e53cada001815d355677266da520781a474dbcc7d7187df518306b6
3
+ metadata.gz: a47086748b62315efd5a4497e118bbb8a537cb153099cefa99e9432a8ed14ecb
4
+ data.tar.gz: 9f74e2177dfd4fb008fb8b203d282217a37846c724b4e2b0bfa55ae982ea83ef
5
5
  SHA512:
6
- metadata.gz: 16fe32793aeec46fffa7b2e0830ba56d53910751945a624c2652566b10d318ace07a625db96a76901c7c2afb3f3505282658df37633fdc793725be7905660856
7
- data.tar.gz: 39b52c84ec5d173199f9e3234abd11c0747fee9ceaee55f71b17b8185cd0f3ff14fcb48ae8dc3c89b88895799abc0d0680f0efcde5842aefc2b448d42312641a
6
+ metadata.gz: 50d2cb4beda62d0c4189c22eb201ae8cc95e1cf6d9e0f037522f58c27ce3ddf34a000fba9156a71b662b223313fe2cdd4d5589916094cbe19b71393220e62464
7
+ data.tar.gz: 723da7c50cc2d87ea2c8de011c0f54d743c32c5abf99da5441a5cf6a6cec7657ec4dd35de3d67ab6d3cc9ed8b95db01c0ef702a20a6d33b8a25d1f1ba7ab34dc
data/README.md CHANGED
@@ -112,6 +112,8 @@ logger = ::SimpleLogger.new
112
112
  logger.debug "some debug"
113
113
  logger.error "that failed ..."
114
114
 
115
+ # ----------------------------------------------------------------------------------------------------------------------
116
+
115
117
  alternative_logger = ::SimpleLogger.new :memory
116
118
  alternative_logger.debug "some debug, just in memory logs"
117
119
  alternative_logger.error "that failed, also in memory logs..."
@@ -123,6 +125,16 @@ alternative_logger.logs
123
125
  # access the logs as grouped hash
124
126
  alternative_logger.logs_to_h
125
127
  #=> {:debug=>["some debug, just in memory logs"], :error=>["that failed, also in memory logs..."]}
128
+
129
+ # ----------------------------------------------------------------------------------------------------------------------
130
+
131
+ multi_logger = ::SimpleLogger.new :memory, :stdout, clr: true, format: :default
132
+ multi_logger.debug "some debug, sent to stdout & memory"
133
+ # > D, [2023-02-15T10:22:45.030758 #13397] DEBUG -- : some debug, sent to stdout & memory
134
+
135
+ # access the logs as array
136
+ multi_logger.logs
137
+ # => [[:debug, 2023-02-15T10:22:45 +0200, "some debug, sent to stdout & memory"]]
126
138
  ```
127
139
  _You can also create a new instance from every klass_logger Object (see below)._
128
140
 
@@ -142,7 +154,6 @@ MyCustomLogger.theme "My Theme"
142
154
 
143
155
  # log directly to a customized logfile - created through the builtin module name
144
156
  MyCustomLogger.klass_logger_opts = {builtin: MyApp::Tasks::SpecialTask}
145
- MyCustomLogger.clear!
146
157
  MyCustomLogger.info "Very nice here"
147
158
  # => creates a logfile @ log/my_app/tasks/special_task.log
148
159
  ```
@@ -156,7 +167,6 @@ SimpleLogger.error "that failed ..."
156
167
 
157
168
  # resetting options
158
169
  SimpleLogger.klass_logger_opts = {builtin: :memory, stdout: false}
159
- SimpleLogger.clear!
160
170
 
161
171
  SimpleLogger.debug "some other debug in memory only ..."
162
172
  SimpleLogger.logs
@@ -167,13 +177,14 @@ other_logger = SimpleLogger.new
167
177
  other_logger.debug "some other debug in memory only ..."
168
178
 
169
179
  # create new logger, but don't use 'klass_logger_opts' - instead pipe to the rails logger
170
- other_logger2 = SimpleLogger.new :rails
180
+ other_logger2 = SimpleLogger.new :rails, :stdout
171
181
  other_logger2.info "directly logs to the rails logger"
182
+ other_logger2.info "and also to STDOUT"
172
183
  ```
173
184
 
174
- Alternatives with 'Debugger':
185
+ Alternatives with already build 'Debugger':
175
186
  ```ruby
176
- require 'debugger'
187
+ require 'ruby_smart-debugger'
177
188
 
178
189
  Debugger.debug "some debug"
179
190
  Debugger.error "that failed ..."
@@ -530,7 +541,7 @@ logger.debug({ a: 1, b: 2 })
530
541
 
531
542
  ## _defaults_
532
543
 
533
- Logger default options are still available: ```shift_age, shift_size, progname, datetime_format, shift_period_suffix```
544
+ Device default options are still available: ```shift_age, shift_size, progname, datetime_format, shift_period_suffix, binmode```
534
545
 
535
546
  -----
536
547
 
@@ -737,19 +748,19 @@ l.processed("Process Alpha", timer: true) do
737
748
  end
738
749
 
739
750
 
740
- # ╔ START - Process Alpha
751
+ # ╔ START :: Process Alpha
741
752
  # ╟ find files
742
753
  # ╟ found 34 files
743
- # ║ ┌ START - extracting ...
754
+ # ║ ┌ START :: extracting ...
744
755
  # ║ ├ 10% done
745
756
  # ║ ├ 20% done
746
757
  # ║ ├ 100% done
747
- # ║ └ END - SUCCESS (duration: 0.000267545)
748
- # ║ ┌ START - transforming ...
758
+ # ║ └ END [SUCCESS] (duration: 0.000267545)
759
+ # ║ ┌ START :: transforming ...
749
760
  # ║ ├ bad memory
750
761
  # ║ ├ rolling back
751
- # ║ └ END - FAILED
752
- # ╚ END - Process Alpha (duration: 0.001040807)
762
+ # ║ └ END [FAILED]
763
+ # ╚ END [Process Alpha] (duration: 0.001040807)
753
764
  ```
754
765
 
755
766
  ### _other useful methods_
data/docs/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # RubySmart::SimpleLogger - CHANGELOG
2
2
 
3
+ ## [1.2.0] - 2023-02-16
4
+ * **[add]** multi-'builtins' support
5
+ * **[ref]** `Logger` initialization - now supports to provide multiple builtins
6
+ * **[ref]** `Debugger` requirement to 'ruby_smart-debugger' instead of 'debugger'
7
+ * **[ref]** 'processed' scene to be moved to 'debug'-severity
8
+ * **[fix]** some contradictions within the builtins
9
+ * **[fix]** nested 'logdev' relation with `::RubySmart::SimpleLogger::Devices::MultiDevice` devices
10
+ * **[fix]** `::RubySmart::SimpleLogger::KlassLogger` not forwarding optional block to scenes
11
+ * **[fix]** overcomplicated initialization with ruby's logger - now creates it own logdev
12
+ * **[fix]** `Debugger` conflict with `ruby-debug-ide`-gem
13
+ * **[fix]** 'date_helper' initialisation
14
+
15
+ ## [1.1.1] - 2023-02-07
16
+ * **[fix]** 'ruby 2.6.x' kwargs for `::Logger::LogDevice` messed up with 'binmode'
17
+
3
18
  ## [1.1.0] - 2023-02-07
4
19
  * **[add]** `#processed` method for logger
5
20
  * **[ref]** `Debugger` to enforce a 'DEBUG' severity
@@ -11,98 +11,178 @@ module RubySmart
11
11
 
12
12
  private
13
13
 
14
- # prepare builtin defaults
14
+ # set / overwrite default opts
15
15
  # @param [Hash] opts
16
- # @param [Object] builtin
17
- def _opts_builtin(opts, builtin = nil)
18
- builtin ||= opts.delete(:builtin)
16
+ def _opts_init!(opts)
17
+ ##################################################################################
18
+ # level
19
+
20
+ # initialize a default rails-dependent output
21
+ if ::ThreadInfo.rails?
22
+ opts[:level] ||= (::Rails.env.production? ? :info : :debug)
23
+ end
24
+
25
+ # clean & rewrite level (possible symbols) to real level
26
+ opts[:level] = _level(opts[:level] || :debug)
27
+
28
+ ##################################################################################
29
+ # mask
30
+
31
+ # set mask from options
32
+ self.mask(opts[:mask]) if opts[:mask]
33
+
34
+ # disable mask color if explicit disabled
35
+ self.mask(clr: false) if opts[:clr] == false
36
+
37
+ # reduce mask-size to window size
38
+ if ::ThreadInfo.windowed? && ::ThreadInfo.winsize[1] < self.mask[:length]
39
+ self.mask(length: ::ThreadInfo.winsize[1])
40
+ end
41
+
42
+ ##################################################################################
43
+ # instance related
44
+
45
+ # ignore payload and send data directly to the logdev
46
+ @ignore_payload = true if @ignore_payload.nil? && opts[:payload] == false
47
+
48
+ # set the inspector to be used for data inspection.
49
+ # 'disable' inspector, if false was provided - which simply results in +#to_s+
50
+ @inspector = (opts[:inspect] == false) ? :to_s : opts[:inspector]
51
+
52
+ # prevent to return any data
53
+ nil
54
+ end
55
+
56
+ # enhance provided opts with +:device+.
57
+ # opts may be manipulated by resolved device
58
+ # does not return any data.
59
+ # @param [Hash] opts
60
+ def _opts_device!(opts)
61
+ # check for already existing +device+
62
+ return if opts[:device]
63
+
64
+ # remove builtin key from opts
65
+ builtin = opts.delete(:builtin)
66
+
67
+ # retransform array into single value
68
+ builtin = builtin[0] if builtin.is_a?(Array) && builtin.length < 2
69
+
70
+ # expand current builtin with optional provided keywords
71
+ if opts.delete(:stdout)
72
+ builtin = [builtin] unless builtin.is_a?(Array)
73
+ builtin << :stdout
74
+ end
75
+
76
+ if opts.delete(:memory)
77
+ builtin = [builtin] unless builtin.is_a?(Array)
78
+ builtin << :memory
79
+ end
80
+
81
+ # determinate builtin - first check to create +MultiDevice+.
82
+ if builtin.is_a?(Array)
83
+ opts[:device] = ::RubySmart::SimpleLogger::Devices::MultiDevice.new
84
+ builtin.uniq.each do |key|
85
+ # IMPORTANT: dup, original hash to prevent reference manipulation (on the TOP-level, only)
86
+ builtin_opts = opts.dup
87
+ opts[:device].register(_resolve_device(key, builtin_opts), _resolve_formatter(builtin_opts))
88
+ end
89
+
90
+ # force 'passthrough', as format, since this is required for multi-devices
91
+ opts[:format] = :passthrough
92
+ else
93
+ opts[:device] = _resolve_device(builtin, opts)
94
+ end
95
+
96
+ # prevent to return any data
97
+ nil
98
+ end
99
+
100
+ # enhance provided opts with +:formatter+.
101
+ # opts may be manipulated by resolved formatter
102
+ # does not return any data.
103
+ # @param [Hash] opts
104
+ def _opts_formatter!(opts)
105
+ # check for already existing +formatter+
106
+ return if opts[:formatter]
107
+
108
+ opts[:formatter] = _resolve_formatter(opts)
109
+
110
+ # prevent to return any data
111
+ nil
112
+ end
113
+
114
+ # resolves & returns formatter from provided opts
115
+ # @param [Hash] opts
116
+ # @return [RubySmart::SimpleLogger::Formatter]
117
+ def _resolve_formatter(opts)
118
+ # set default format
119
+ opts[:format] ||= :plain
19
120
 
121
+ # fix nl - which depends on other opts
122
+ opts[:nl] = _nl(opts)
123
+
124
+ # fix clr
125
+ opts[:clr] = true if opts[:clr].nil?
126
+
127
+ ::RubySmart::SimpleLogger::Formatter.new(opts)
128
+ end
129
+
130
+ # resolves & returns device from builtin & provided opts
131
+ # @param [Object] builtin
132
+ # @param [Hash] opts
133
+ def _resolve_device(builtin, opts)
20
134
  case builtin
21
- when nil
22
- # device is nil - resolve optimal device
135
+ when nil # builtin is nil - resolve optimal device for current environment
23
136
  if ::ThreadInfo.stdout?
24
- _opts_builtin(opts, :stdout)
137
+ _resolve_device(:stdout, opts)
25
138
  elsif ::ThreadInfo.rails? && ::Rails.logger
26
- _opts_builtin(opts, :rails)
139
+ _resolve_device(:stdout, opts)
27
140
  else
28
- _opts_builtin(opts, :memory)
141
+ _resolve_device(:memory, opts)
29
142
  end
30
143
  when :stdout
31
- # set device ONLY if unset in opts
32
- opts[:device] ||= STDOUT
33
- # colorize output
34
- opts[:clr] = true if opts[:clr].nil?
144
+ STDOUT
35
145
  when :stderr
36
- opts[:device] ||= STDERR
37
- # colorize output
38
- opts[:clr] = true if opts[:clr].nil?
146
+ STDERR
39
147
  when :rails
40
- # set device ONLY if unset in opts
41
- opts[:device] ||= ::RubySmart::SimpleLogger::Devices::MultiDevice.register(::Rails.logger.instance_variable_get(:@logdev).dev)
148
+ ::Rails.logger.instance_variable_get(:@logdev).dev
42
149
  when :proc
43
- # auto sets related opts for proc device
44
- opts[:payload] = false
150
+ # force overwrite opts
151
+ @ignore_payload = true
45
152
  opts[:nl] = false
46
- opts[:format] ||= :passthrough
153
+ opts[:format] = :passthrough
47
154
 
48
- # set device ONLY if unset in opts
49
- opts[:device] ||= ::RubySmart::SimpleLogger::Devices::ProcDevice.new(opts[:proc])
155
+ ::RubySmart::SimpleLogger::Devices::ProcDevice.new(opts.delete(:proc))
50
156
  when :memory
51
- # auto sets related opts for memory device
52
- opts[:payload] = false
53
-
54
- # set device ONLY if unset in opts
55
- opts[:device] ||= if opts[:stdout]
56
- # store original format
57
- stdout_format = opts[:format] || :plain
58
-
59
- # force 'passthrough', as format, since this is required for multi-devices
60
- opts[:format] = :passthrough
61
-
62
- # special case handling to additionally stdout logs
63
- ::RubySmart::SimpleLogger::Devices::MultiDevice.new
64
- .register(::RubySmart::SimpleLogger::Devices::MemoryDevice.new, ::RubySmart::SimpleLogger::Formatter.new(format: :memory))
65
- .register(STDOUT, ::RubySmart::SimpleLogger::Formatter.new(format: stdout_format, nl: _nl(opts), clr: opts[:clr]))
66
- else
67
- opts[:format] ||= :memory
68
- ::RubySmart::SimpleLogger::Devices::MemoryDevice.new
69
- end
70
- when Module
71
- # set device ONLY if unset in opts
72
- opts[:device] ||= if opts[:stdout]
73
- # store original format
74
- device_format = opts[:format] || :plain
75
-
76
- # force 'passthrough', as format, since this is required for multi-devices
77
- opts[:format] = :passthrough
78
-
79
- # colorize output
80
- opts[:clr] = true if opts[:clr].nil?
81
-
82
- # special case handling to additionally stdout logs
83
- ::RubySmart::SimpleLogger::Devices::MultiDevice.register(
84
- ::Logger::LogDevice.new(_logdev(builtin),
85
- shift_age: opts[:shift_age] || 0,
86
- shift_size: opts[:shift_size] || 1048576,
87
- shift_period_suffix: opts[:shift_period_suffix],
88
- binmode: opts[:binmode]),
89
- ::RubySmart::SimpleLogger::Formatter.new(format: device_format, nl: _nl(opts), clr: false)
90
- )
91
- .register(STDOUT, ::RubySmart::SimpleLogger::Formatter.new(format: device_format, nl: _nl(opts), clr: opts[:clr]))
92
- else
93
- builtin
94
- end
157
+ # force overwrite opts
158
+ @ignore_payload = true
159
+ opts[:format] = :memory
160
+
161
+ ::RubySmart::SimpleLogger::Devices::MemoryDevice.new
162
+ when Module, String
163
+ # force overwrite opts
164
+ opts[:clr] = false
165
+ _logdev(opts, builtin)
95
166
  else
96
- # forward provided device ONLY if unset in opts
97
- opts[:device] ||= builtin
167
+ _logdev(opts, builtin)
98
168
  end
99
169
  end
100
170
 
101
171
  # resolve the final log-device from provided param
172
+ # @param [Hash] opts
102
173
  # @param [Object] device
103
- # @return [Object]
104
- def _logdev(device)
105
- if device.is_a?(Module)
174
+ # @return [:Logger::LogDevice]
175
+ def _logdev(opts, device = nil)
176
+ device ||= opts.delete(:device)
177
+
178
+ # if existing device is already writeable, simply return it
179
+ return device if device.respond_to?(:write)
180
+
181
+ file_location = nil
182
+
183
+ # resolve the file_location from provided device
184
+ case device
185
+ when Module
106
186
  devstring = device.to_s
107
187
  logfile = (devstring.respond_to?(:underscore) ? devstring.underscore : _underscore(device.to_s)) + '.log'
108
188
  # check for rails
@@ -116,23 +196,36 @@ module RubySmart
116
196
  file_path = File.dirname(file_location)
117
197
  FileUtils.mkdir_p(file_path) unless File.directory?(file_path)
118
198
 
199
+ # the logdev
119
200
  file_location
120
- elsif device.is_a?(String)
121
- device = "log/#{device}" unless device[0] == '/'
201
+ when String
202
+ file_location = (device[0] == '/' ? device : "log/#{device}")
122
203
 
123
204
  # resolve path to create a folder
124
- file_path = File.dirname(device)
205
+ file_path = File.dirname(file_location)
125
206
  FileUtils.mkdir_p(file_path) unless File.directory?(file_path)
126
207
 
127
- device
128
- elsif device.respond_to?(:write)
129
- device
208
+ file_location
130
209
  else
131
- raise "SimpleLogger :: device '#{device}' must respond to 'write'!"
210
+ raise "Unable to build SimpleLogger! The provided device '#{device}' must respond to 'write'!"
211
+ end
212
+
213
+ if GemInfo.match?(RUBY_VERSION, '< 2.7')
214
+ ::Logger::LogDevice.new(file_location,
215
+ shift_age: opts[:shift_age] || 0,
216
+ shift_size: opts[:shift_size] || 1048576,
217
+ shift_period_suffix: opts[:shift_period_suffix])
218
+ else
219
+ ::Logger::LogDevice.new(file_location,
220
+ shift_age: opts[:shift_age] || 0,
221
+ shift_size: opts[:shift_size] || 1048576,
222
+ shift_period_suffix: opts[:shift_period_suffix],
223
+ binmode: opts[:binmode])
132
224
  end
133
225
  end
134
226
 
135
227
  # this is a 1:1 copy of +String#underscore+ @ activesupport gem
228
+ # and only used if activesupport is not available ...
136
229
  def _underscore(camel_cased_word)
137
230
  return camel_cased_word unless /[A-Z-]|::/.match?(camel_cased_word)
138
231
  word = camel_cased_word.to_s.gsub("::", "/")
@@ -144,52 +237,6 @@ module RubySmart
144
237
  word
145
238
  end
146
239
 
147
- # build log-device & options on initialize
148
- # @param [Hash] opts
149
- # @return [Array<logdev,opts>] logdev, opts
150
- def _init_opts(opts)
151
- # clean & rewrite opts (especially device) to a real logdev
152
- _opts_builtin(opts)
153
-
154
- # set mask from options
155
- self.mask(opts[:mask]) if opts[:mask]
156
-
157
- # disable mask color if explicit disabled
158
- self.mask(clr: false) if opts[:clr] == false
159
-
160
- # reduce mask-size to window size
161
- if ::ThreadInfo.windowed? && ::ThreadInfo.winsize[1] < self.mask[:length]
162
- self.mask(length: ::ThreadInfo.winsize[1])
163
- end
164
-
165
- # initialize a default rails-dependent output
166
- if ::ThreadInfo.rails?
167
- opts[:level] ||= (::Rails.env.production? ? :info : :debug)
168
- end
169
-
170
- # clean & rewrite level (possible symbols) to real level
171
- opts[:level] = _level(opts[:level] || :debug)
172
-
173
- # clean & rewrite nl
174
- opts[:nl] = _nl(opts)
175
-
176
- # rewrite format
177
- opts[:format] ||= :plain
178
-
179
- # provide custom formatter and forward special opts (format, nl, clr)
180
- opts[:formatter] ||= ::RubySmart::SimpleLogger::Formatter.new(opts)
181
-
182
- # ignore payload and send data directly to the logdev
183
- @ignore_payload = true if opts[:payload].is_a?(FalseClass)
184
-
185
- # set the inspector to be used for data inspection.
186
- # 'disable' inspector, if false was provided - which simply results in +#to_s+
187
- @inspector = (opts[:inspect] === false) ? :to_s : opts[:inspector]
188
-
189
- # simple return opts
190
- opts
191
- end
192
-
193
240
  # returns the +nl+ (new line) flag, depending on the provided options.
194
241
  # recognizes +:nl+ and +:payload+ options.
195
242
  # @param [Hash] opts
@@ -241,8 +288,8 @@ module RubySmart
241
288
  # @param [String] str
242
289
  # @param [String, Symbol, nil] color
243
290
  # @return [String] colored string
244
- def _clr(str, color)
245
- return str unless color && str.respond_to?(color)
291
+ def _clr(str, color = nil)
292
+ return str unless color
246
293
  str.send(color) rescue str
247
294
  end
248
295
 
@@ -7,8 +7,8 @@ module RubySmart
7
7
  # returns the logdev logs
8
8
  # @return [Array]
9
9
  def logs
10
- return [] unless logdev.dev.respond_to?(:logs)
11
- logdev.dev.logs
10
+ return [] unless logdev.respond_to?(:logs)
11
+ logdev.logs
12
12
  end
13
13
 
14
14
  # transforms the logs-array into a hash of logs, grouped by level (:error, :success, ...)
@@ -9,7 +9,7 @@ module RubySmart
9
9
 
10
10
  module VERSION
11
11
  MAJOR = 1
12
- MINOR = 1
12
+ MINOR = 2
13
13
  TINY = 0
14
14
  PRE = nil
15
15
 
@@ -19,14 +19,13 @@ module RubySmart
19
19
  class_variable_set('@@klass_logger_opts', opts)
20
20
  end
21
21
 
22
- # delegate new method to logger
22
+ # delegate new method to Logger
23
23
  def new(*args)
24
- args = [nil, self.klass_logger_opts.dup] if args.length == 0
25
24
  RubySmart::SimpleLogger::Logger.new(*args)
26
25
  end
27
26
 
28
27
  def klass_logger
29
- @klass_logger ||= self.new
28
+ @klass_logger ||= self.new(self.klass_logger_opts.dup)
30
29
  end
31
30
 
32
31
  def clear!
@@ -34,7 +33,7 @@ module RubySmart
34
33
  end
35
34
 
36
35
  def method_missing(name, *args, &block)
37
- return self.klass_logger.send(name, *args) if self.klass_logger.respond_to? name
36
+ return self.klass_logger.send(name, *args, &block) if self.klass_logger.respond_to? name
38
37
  super
39
38
  end
40
39
 
@@ -40,30 +40,30 @@ module RubySmart
40
40
  # defines a uniq key to parse the data
41
41
  PAYLOAD_DATA_KEY = :__data__
42
42
 
43
- # initialize new Logger
44
- # @param [Object, Symbol, nil] builtin
45
- # @param [Hash] opts
46
- # @option opts [Symbol] :format - defines a custom format
47
- def initialize(builtin = nil, opts = nil)
48
- # check if only a hash was provided
49
- if opts.nil? && builtin.is_a?(Hash)
50
- opts = builtin
51
- else
52
- opts ||= {}
43
+ # initializes a new Logger
44
+ #
45
+ # @param [Array] args (<builtin>,<opts>) OR (<builtin>) OR (<opts>)
46
+ # @option args[Symbol,Array] <builtin> - provide a builtin, either a single symbol or array of symbols
47
+ # @option args[Hash] <options> - provide custom options
48
+ def initialize(*args)
49
+ opts = args.last.is_a?(Hash) ? args.pop : {}
50
+ opts[:builtin] = args if args.length > 0
53
51
 
54
- # extend builtin option if not set
55
- opts[:builtin] = builtin unless opts[:builtin]
56
- end
52
+ # enhance options with device & formatter
53
+ _opts_device!(opts)
54
+ _opts_formatter!(opts)
57
55
 
58
- # initialize provided opts
59
- o = _init_opts(opts)
56
+ # initialize & set defaults by provided opts
57
+ _opts_init!(opts)
60
58
 
61
- super(
62
- _logdev(o[:device]),
63
- o[:shift_age] || 0,
64
- o[:shift_size] || 1048576,
65
- **o.slice(:level, :progname, :formatter, :datetime_format, :binmode, :shift_period_suffix)
66
- )
59
+ # initialize with a nil +logdev+ to prevent any nested +LogDevice+ creation.
60
+ # we already arranged device & formatter to be able to respond to ther required methods
61
+ super(nil)
62
+
63
+ # set explicit after called super
64
+ self.level = opts[:level]
65
+ self.formatter = opts[:formatter]
66
+ @logdev = _logdev(opts)
67
67
  end
68
68
 
69
69
  # overwrite level setter, to accept every available (also newly defined) Severity
@@ -284,14 +284,14 @@ module RubySmart
284
284
  end
285
285
 
286
286
  # processed method
287
- # log level @ info
287
+ # log level @ debug
288
288
  # prints: a processed output with unicode box-chars (e.g. ║ )
289
289
  #
290
- # ╔ START job
290
+ # ╔ START :: job
291
291
  # ╟ doing some cool log
292
292
  # ╟ doing some extra log
293
- # ╚ END job (duration: 4.34223)
294
- base.scene :processed, { level: :info } do |name, opts = {}, &block|
293
+ # ╚ END [job] (duration: 4.34223)
294
+ base.scene :processed, { level: :debug } do |name, opts = {}, &block|
295
295
  # resolve the current process-level
296
296
  lvl = processed_lvl(:up)
297
297
 
@@ -300,18 +300,18 @@ module RubySmart
300
300
  self.timer(:start, timer_key) if timer_key
301
301
  end
302
302
 
303
- self.log("START - #{name}", _scene_opt(:processed, { pcd: :start }))
303
+ self.log("START :: #{name}", _scene_opt(:processed, opts, { pcd: :start }))
304
304
 
305
305
  end_str = case block.call
306
306
  when true
307
- "END - SUCCESS"
307
+ 'SUCCESS'
308
308
  when false
309
- "END - FAILED"
309
+ 'FAILED'
310
310
  else
311
- "END - #{name}"
311
+ name
312
312
  end
313
313
 
314
- self.log("#{end_str} #{(timer_key ? "(duration: #{self.timer(:clear, timer_key, :humanized => true)})" : '')}", _scene_opt(:processed, { pcd: :end }))
314
+ self.log("END [#{end_str}] #{(timer_key ? "(duration: #{self.timer(:clear, timer_key, humanized: true)})" : '')}", _scene_opt(:processed, opts, { pcd: :end }))
315
315
 
316
316
  processed_lvl(:down)
317
317
 
@@ -18,7 +18,7 @@ end
18
18
 
19
19
  # load date extensions for logger
20
20
  if GemInfo.loaded?('activesupport') && GemInfo.installed?('actionview')
21
- ActiveSupport.on_load(:action_view) do
21
+ ActiveSupport.on_load(:active_record) do
22
22
  require('action_view/helpers/date_helper')
23
23
  RubySmart::SimpleLogger::Logger.include(ActionView::Helpers::DateHelper)
24
24
  end
@@ -9,7 +9,7 @@ GemInfo.safe_require 'ruby-debug-ide'
9
9
  # try to load 'awesome_print', if available
10
10
  GemInfo.safe_require 'awesome_print'
11
11
 
12
- class Debugger
12
+ module Debugger
13
13
  extend ::RubySmart::SimpleLogger::KlassLogger
14
14
 
15
15
  # force debugger to 'DEBUG' severity
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_smart-simple_logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tobias Gonsior
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-07 00:00:00.000000000 Z
11
+ date: 2023-02-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ruby_smart-support
@@ -114,7 +114,7 @@ files:
114
114
  - docs/CHANGELOG.md
115
115
  - docs/CODE_OF_CONDUCT.md
116
116
  - docs/LICENSE.txt
117
- - lib/debugger.rb
117
+ - lib/ruby_smart-debugger.rb
118
118
  - lib/ruby_smart-simple_logger.rb
119
119
  - lib/ruby_smart/simple_logger.rb
120
120
  - lib/ruby_smart/simple_logger/core_ext/ruby/string.rb
@@ -161,7 +161,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
161
161
  - !ruby/object:Gem::Version
162
162
  version: '0'
163
163
  requirements: []
164
- rubygems_version: 3.3.7
164
+ rubygems_version: 3.3.26
165
165
  signing_key:
166
166
  specification_version: 4
167
167
  summary: A simple, multifunctional logging library for Ruby.