pantheios-ruby 0.13.4 → 0.20.3.1
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/LICENSE +31 -0
- data/README.md +5 -0
- data/examples/simple_logging.md +65 -0
- data/examples/simple_logging.rb +35 -0
- data/lib/pantheios/api.rb +8 -8
- data/lib/pantheios/application_layer/stock_severity_levels.rb +3 -3
- data/lib/pantheios/core.rb +113 -15
- data/lib/pantheios/globals.rb +22 -3
- data/lib/pantheios/services.rb +3 -0
- data/lib/pantheios/services/multiplexing_log_service.rb +239 -0
- data/lib/pantheios/services/null_log_service.rb +2 -2
- data/lib/pantheios/services/simple_console_log_service.rb +7 -6
- data/lib/pantheios/services/simple_file_log_service.rb +230 -0
- data/lib/pantheios/util/process_util.rb +32 -4
- data/lib/pantheios/util/reflection_util.rb +34 -0
- data/lib/pantheios/version.rb +3 -3
- data/test/performance/test_perf_simple_statements.rb +40 -7
- data/test/scratch/log_files/placeholder +0 -0
- data/test/scratch/log_rolling_by_period_daily.rb +43 -0
- data/test/scratch/log_rolling_by_size_and_depth.rb +43 -0
- data/test/scratch/log_using_blocks.rb +8 -1
- data/test/scratch/multiplexing_log_service.rb +109 -0
- data/test/unit/core/tc_core_1.rb +54 -0
- data/test/unit/core/ts_all.rb +12 -0
- data/test/unit/services/tc_multiplexing_log_service.rb +144 -0
- data/test/unit/services/tc_simple_console_log_service.rb +3 -3
- data/test/unit/services/tc_simple_file_log_service.rb +252 -0
- data/test/unit/util/tc_process_util.rb +24 -0
- data/test/unit/util/tc_reflection_util.rb +54 -0
- metadata +33 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5f5bcc837f0b87b903fe88c0b5d1eb3f2c8193a3
|
4
|
+
data.tar.gz: 6e4acd4a1a86ae3df1f04d5ab506c1f0b0722666
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5d7eff164a890518c3fabca3612d6f5810a554235831838e6a98c47562061924d37e09300e610de1cef8759c9c6ee582b695020b0fd6297c69e82802c9f814d2
|
7
|
+
data.tar.gz: 873c24a5b54e6711d498e06e0c20c335a81fc2f737c0fa1da634c8b5faa2767c6da49743611481ef6c9a446f39953255a500b3bb526854a2e02e1ef997fc285d
|
data/LICENSE
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
Pantheios.Ruby
|
2
|
+
|
3
|
+
Copyright (c) 2017-2019, Matthew Wilson and Synesis Software
|
4
|
+
All rights reserved.
|
5
|
+
|
6
|
+
Redistribution and use in source and binary forms, with or without
|
7
|
+
modification, are permitted provided that the following conditions are met:
|
8
|
+
|
9
|
+
* Redistributions of source code must retain the above copyright notice, this
|
10
|
+
list of conditions and the following disclaimer.
|
11
|
+
|
12
|
+
* Redistributions in binary form must reproduce the above copyright notice,
|
13
|
+
this list of conditions and the following disclaimer in the documentation
|
14
|
+
and/or other materials provided with the distribution.
|
15
|
+
|
16
|
+
* Neither the names of Pantheios or Pantheios.Ruby nor the names of the
|
17
|
+
copyright holder nor the names of its contributors may be used to endorse
|
18
|
+
or promote products derived from this software without specific prior written
|
19
|
+
permission.
|
20
|
+
|
21
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
22
|
+
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
23
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
24
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
25
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
26
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
27
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
28
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
29
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
30
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
31
|
+
|
data/README.md
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
# Pantheios.Ruby Example - **simple_logging**
|
2
|
+
|
3
|
+
## Summary
|
4
|
+
|
5
|
+
Simple example supporting ```--help``` and ```--version```.
|
6
|
+
|
7
|
+
## Source
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
#!/usr/bin/env ruby
|
11
|
+
|
12
|
+
$:.unshift File.join(File.dirname(__FILE__), *([ '..' ] * 1), 'lib')
|
13
|
+
|
14
|
+
# requires (0)
|
15
|
+
|
16
|
+
require 'pantheios/globals'
|
17
|
+
|
18
|
+
# globals
|
19
|
+
|
20
|
+
Pantheios::Globals.MAIN_THREAD_NAME = [ Thread.current, 'main' ]
|
21
|
+
Pantheios::Globals.PROCESS_NAME = :script_stem
|
22
|
+
|
23
|
+
# requires (1)
|
24
|
+
|
25
|
+
require 'pantheios'
|
26
|
+
|
27
|
+
# includes
|
28
|
+
|
29
|
+
include ::Pantheios
|
30
|
+
|
31
|
+
# constants
|
32
|
+
|
33
|
+
LEVELS = %i{ violation alert critical failure warning notice informational debug0 debug1 debug2 debug3 debug4 }
|
34
|
+
|
35
|
+
# main
|
36
|
+
|
37
|
+
LEVELS.each do |level|
|
38
|
+
|
39
|
+
log(level, "logging level #{level}")
|
40
|
+
end
|
41
|
+
|
42
|
+
# ############################## end of file ############################# #
|
43
|
+
```
|
44
|
+
|
45
|
+
## Usage
|
46
|
+
|
47
|
+
### No arguments
|
48
|
+
|
49
|
+
When executed gives the following output:
|
50
|
+
|
51
|
+
```
|
52
|
+
[simple_logging, main, 2019-06-05 13:18:52.517479, Violation]: logging level violation
|
53
|
+
[simple_logging, main, 2019-06-05 13:18:52.517615, Alert]: logging level alert
|
54
|
+
[simple_logging, main, 2019-06-05 13:18:52.517653, Critical]: logging level critical
|
55
|
+
[simple_logging, main, 2019-06-05 13:18:52.517681, Failure]: logging level failure
|
56
|
+
[simple_logging, main, 2019-06-05 13:18:52.517709, Warning]: logging level warning
|
57
|
+
[simple_logging, main, 2019-06-05 13:18:52.517735, Notice]: logging level notice
|
58
|
+
[simple_logging, main, 2019-06-05 13:18:52.517763, Informational]: logging level informational
|
59
|
+
[simple_logging, main, 2019-06-05 13:18:52.517789, Debug-0]: logging level debug0
|
60
|
+
[simple_logging, main, 2019-06-05 13:18:52.517837, Debug-1]: logging level debug1
|
61
|
+
[simple_logging, main, 2019-06-05 13:18:52.517876, Debug-2]: logging level debug2
|
62
|
+
[simple_logging, main, 2019-06-05 13:18:52.517905, Debug-3]: logging level debug3
|
63
|
+
[simple_logging, main, 2019-06-05 13:18:52.517931, Debug-4]: logging level debug4
|
64
|
+
```
|
65
|
+
|
@@ -0,0 +1,35 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
$:.unshift File.join(File.dirname(__FILE__), *([ '..' ] * 1), 'lib')
|
4
|
+
|
5
|
+
# requires (0)
|
6
|
+
|
7
|
+
require 'pantheios/globals'
|
8
|
+
|
9
|
+
# globals
|
10
|
+
|
11
|
+
Pantheios::Globals.MAIN_THREAD_NAME = [ Thread.current, 'main' ]
|
12
|
+
Pantheios::Globals.PROCESS_NAME = :script_stem
|
13
|
+
|
14
|
+
# requires (1)
|
15
|
+
|
16
|
+
require 'pantheios'
|
17
|
+
|
18
|
+
# includes
|
19
|
+
|
20
|
+
include ::Pantheios
|
21
|
+
|
22
|
+
# constants
|
23
|
+
|
24
|
+
LEVELS = %i{ violation alert critical failure warning notice informational debug0 debug1 debug2 debug3 debug4 }
|
25
|
+
|
26
|
+
# main
|
27
|
+
|
28
|
+
LEVELS.each do |level|
|
29
|
+
|
30
|
+
log(level, "logging level #{level}")
|
31
|
+
end
|
32
|
+
|
33
|
+
# ############################## end of file ############################# #
|
34
|
+
|
35
|
+
|
data/lib/pantheios/api.rb
CHANGED
@@ -70,7 +70,7 @@ module Pantheios
|
|
70
70
|
#
|
71
71
|
# - prefix_elements
|
72
72
|
# - process_id
|
73
|
-
# -
|
73
|
+
# - process_name
|
74
74
|
# - severity_string severity
|
75
75
|
# - thread_id
|
76
76
|
# - timestamp t
|
@@ -160,7 +160,7 @@ module API
|
|
160
160
|
# === Elements
|
161
161
|
#
|
162
162
|
# Elements can be one of:
|
163
|
-
# - +:
|
163
|
+
# - +:process_name+
|
164
164
|
# - +:process_id+
|
165
165
|
# - +:severity+
|
166
166
|
# - +:thread_id+
|
@@ -169,7 +169,7 @@ module API
|
|
169
169
|
# This is called from +prefix+
|
170
170
|
def prefix_elements
|
171
171
|
|
172
|
-
[ :
|
172
|
+
[ :process_name, :thread_id, :timestamp, :severity ]
|
173
173
|
end
|
174
174
|
|
175
175
|
# Obtains the process id
|
@@ -184,10 +184,10 @@ module API
|
|
184
184
|
# Obtains the program name
|
185
185
|
#
|
186
186
|
# Unless overridden, returns the value provided by
|
187
|
-
# +::Pantheios::Core::
|
188
|
-
def
|
187
|
+
# +::Pantheios::Core::process_name+
|
188
|
+
def process_name
|
189
189
|
|
190
|
-
::Pantheios::Core.
|
190
|
+
::Pantheios::Core.process_name
|
191
191
|
end
|
192
192
|
|
193
193
|
# Obtains the string corresponding to the severity
|
@@ -222,9 +222,9 @@ module API
|
|
222
222
|
prefix_elements.map do |el|
|
223
223
|
|
224
224
|
case el
|
225
|
-
when :program_name
|
225
|
+
when :program_name, :process_name
|
226
226
|
|
227
|
-
|
227
|
+
process_name
|
228
228
|
when :process_id
|
229
229
|
|
230
230
|
process_id
|
@@ -7,7 +7,7 @@
|
|
7
7
|
# namespace module
|
8
8
|
#
|
9
9
|
# Created: 2nd April 2011
|
10
|
-
# Updated:
|
10
|
+
# Updated: 12th March 2018
|
11
11
|
#
|
12
12
|
# Home: http://github.com/synesissoftware/Pantheios-Ruby
|
13
13
|
#
|
@@ -71,8 +71,8 @@ module StockSeverityLevels
|
|
71
71
|
:debug2 => [ 10, 'Debug-2' ],
|
72
72
|
:debug3 => [ 11, 'Debug-3' ],
|
73
73
|
:debug4 => [ 12, 'Debug-4' ],
|
74
|
-
:trace => [
|
75
|
-
:benchmark => [
|
74
|
+
:trace => [ 15, 'Trace' ],
|
75
|
+
:benchmark => [ 16, 'Benchmark' ],
|
76
76
|
}
|
77
77
|
|
78
78
|
def self.create_level_keys m
|
data/lib/pantheios/core.rb
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
# Purpose: The Pantheios.Ruby core (::Pantheios::Core)
|
6
6
|
#
|
7
7
|
# Created: 2nd April 2011
|
8
|
-
# Updated:
|
8
|
+
# Updated: 5th September 2018
|
9
9
|
#
|
10
10
|
# Home: http://github.com/synesissoftware/Pantheios-Ruby
|
11
11
|
#
|
@@ -51,6 +51,8 @@ require 'pantheios/application_layer/stock_severity_levels'
|
|
51
51
|
require 'pantheios/services/simple_console_log_service'
|
52
52
|
|
53
53
|
require 'pantheios/util/process_util'
|
54
|
+
require 'pantheios/util/reflection_util'
|
55
|
+
require 'pantheios/util/thread_util'
|
54
56
|
|
55
57
|
=begin
|
56
58
|
=end
|
@@ -132,8 +134,14 @@ module Core
|
|
132
134
|
|
133
135
|
def set_service svc
|
134
136
|
|
137
|
+
raise ::ArgumentError, 'service instance may not be nil' if svc.nil?
|
138
|
+
|
135
139
|
raise ::TypeError, "service instance (#{svc.class}) does not respond to all the required messages ([ #{Constants_::REQUIRED_SERVICE_METHODS.join(', ')} ])" unless Constants_::REQUIRED_SERVICE_METHODS.all? { |m| svc.respond_to? m }
|
136
140
|
|
141
|
+
nrcs = ::Pantheios::Util::ReflectionUtil.non_root_classes svc
|
142
|
+
|
143
|
+
raise ::TypeError, "service instance class - #{svc.class} - inherits some of the required messages - [ #{Constants_::REQUIRED_SERVICE_METHODS.join(', ')} ] - from the top-level" unless Constants_::REQUIRED_SERVICE_METHODS.all? { |m| nrcs.any? { |nr| nr.instance_methods(false).include? m } }
|
144
|
+
|
137
145
|
r = []
|
138
146
|
srp = svc.respond_to?(:requires_prefix?) ? svc.requires_prefix? : true
|
139
147
|
|
@@ -199,6 +207,70 @@ module Core
|
|
199
207
|
# :nodoc:
|
200
208
|
def self.core_init
|
201
209
|
|
210
|
+
# process-name
|
211
|
+
|
212
|
+
prg_nam = nil
|
213
|
+
|
214
|
+
case Pantheios::Globals.PROCESS_NAME
|
215
|
+
when nil
|
216
|
+
|
217
|
+
;
|
218
|
+
when ::Symbol
|
219
|
+
|
220
|
+
prg_nam = ::Pantheios::Util::ProcessUtil.derive_process_name $0, style: Pantheios::Globals.PROCESS_NAME
|
221
|
+
when ::String
|
222
|
+
|
223
|
+
prg_nam = Pantheios::Globals.PROCESS_NAME.strip
|
224
|
+
prg_nam = nil if prg_name.empty?
|
225
|
+
else
|
226
|
+
|
227
|
+
warn "ignoring unsupported Globals.PROCESS_NAME type - '#{Pantheios::Globals.PROCESS_NAME.class}'"
|
228
|
+
end
|
229
|
+
|
230
|
+
@process_name = prg_nam if prg_nam
|
231
|
+
|
232
|
+
|
233
|
+
# main thread-name
|
234
|
+
#
|
235
|
+
# This is obtained from Pantheios::Globals.MAIN_THREAD_NAME, which
|
236
|
+
# may be either ::String or [ ::String, ::Thread ]
|
237
|
+
|
238
|
+
mt_th = nil
|
239
|
+
mt_nam = nil
|
240
|
+
|
241
|
+
case pg_mtn = ::Pantheios::Globals.MAIN_THREAD_NAME
|
242
|
+
when nil
|
243
|
+
|
244
|
+
;
|
245
|
+
when ::Array
|
246
|
+
|
247
|
+
if pg_mtn.size != 2
|
248
|
+
|
249
|
+
warn "ignoring array of wrong length - #{pg_mtn.size} given; 2-required - for Globals.MAIN_THREAD_TYPE"
|
250
|
+
else
|
251
|
+
|
252
|
+
mt_th = pg_mtn[0]
|
253
|
+
mt_nam = pg_mtn[1]
|
254
|
+
|
255
|
+
if ::Thread === mt_nam
|
256
|
+
|
257
|
+
mt_th, mt_nam = mt_nam, mt_th
|
258
|
+
end
|
259
|
+
end
|
260
|
+
when ::String
|
261
|
+
|
262
|
+
mt_th = Thread.current
|
263
|
+
mt_nam = pg_mtn
|
264
|
+
else
|
265
|
+
|
266
|
+
warn "ignoring unsupported Globals.MAIN_THREAD_NAME type - '#{Pantheios::Globals.MAIN_THREAD_NAME.class}'"
|
267
|
+
end
|
268
|
+
|
269
|
+
::Pantheios::Util::ThreadUtil.set_thread_name mt_th, mt_nam if mt_nam
|
270
|
+
|
271
|
+
|
272
|
+
# state (incl. default service)
|
273
|
+
|
202
274
|
@@state = Internals_::State.new Internals_::DefaultDiscriminator.new
|
203
275
|
|
204
276
|
self.set_default_service
|
@@ -209,14 +281,14 @@ module Core
|
|
209
281
|
|
210
282
|
# determine which log service to initialise as the default
|
211
283
|
|
212
|
-
(::Pantheios::Globals.INITIAL_SERVICE_INSTANCES || []).each do |inst|
|
284
|
+
([::Pantheios::Globals.INITIAL_SERVICE_INSTANCES].flatten || []).reject(&:nil?).each do |inst|
|
213
285
|
|
214
286
|
next unless inst
|
215
287
|
|
216
288
|
return @@state.set_service inst
|
217
289
|
end
|
218
290
|
|
219
|
-
(::Pantheios::Globals.INITIAL_SERVICE_CLASSES || []).each do |cls|
|
291
|
+
([::Pantheios::Globals.INITIAL_SERVICE_CLASSES].flatten || []).reject(&:nil?).each do |cls|
|
220
292
|
|
221
293
|
inst = cls.new
|
222
294
|
|
@@ -307,18 +379,43 @@ module Core
|
|
307
379
|
Process.pid
|
308
380
|
end
|
309
381
|
|
310
|
-
# Default implementation to obtain the
|
382
|
+
# Default implementation to obtain the process name
|
311
383
|
#
|
312
384
|
# * *Returns:*
|
313
385
|
# The file stem of +$0+
|
314
386
|
#
|
315
|
-
# NOTE: this is implemented in terms of
|
316
|
-
# and the result is cached
|
317
|
-
def self.
|
387
|
+
# NOTE: this is implemented in terms of
|
388
|
+
# +Process_Util.derive_process_name+ and the result is cached
|
389
|
+
def self.process_name
|
318
390
|
|
319
|
-
@
|
391
|
+
@process_name ||= ::Pantheios::Util::ProcessUtil.derive_process_name $0
|
320
392
|
end
|
321
393
|
|
394
|
+
# [DEPRECATED] Use +process_name+
|
395
|
+
def self.program_name; self.process_name; end
|
396
|
+
|
397
|
+
# Sets the process name
|
398
|
+
#
|
399
|
+
# * *Parameters:*
|
400
|
+
# - +name+:: [String] The (new) process name. May be +nil+, in which
|
401
|
+
# case +process_name+ will obtain the process name from
|
402
|
+
# +Process_Util.derive_process_name+
|
403
|
+
#
|
404
|
+
# * *Returns:*
|
405
|
+
# The previous version
|
406
|
+
#
|
407
|
+
# NOTE: to reset the value, set to +nil+
|
408
|
+
def self.process_name= name
|
409
|
+
|
410
|
+
previous, @process_name = @process_name, name
|
411
|
+
|
412
|
+
previous
|
413
|
+
end
|
414
|
+
|
415
|
+
# [DEPRECATED] Use +process_name=+
|
416
|
+
def self.program_name= name; self.process_name = name; end
|
417
|
+
|
418
|
+
# Obtains a string form of the given severity
|
322
419
|
def self.severity_string severity
|
323
420
|
|
324
421
|
r = ApplicationLayer::StockSeverityLevels::STOCK_SEVERITY_LEVEL_STRINGS[severity] and return r
|
@@ -409,7 +506,7 @@ module Core
|
|
409
506
|
|
410
507
|
if block_given?
|
411
508
|
|
412
|
-
br = get_block_value_
|
509
|
+
br = get_block_value_(&block)
|
413
510
|
|
414
511
|
if ApplicationLayer::ParamNameList === br
|
415
512
|
|
@@ -430,20 +527,21 @@ module Core
|
|
430
527
|
end
|
431
528
|
end
|
432
529
|
|
530
|
+
fl = nil
|
531
|
+
rx = nil
|
532
|
+
fn = caller(call_depth + 1, 1)[0]
|
533
|
+
|
433
534
|
case param_list
|
434
535
|
when nil
|
435
536
|
;
|
436
537
|
when ApplicationLayer::ParamNameList
|
437
|
-
|
538
|
+
|
539
|
+
warn "#{fn}: param_list must contain only strings or symbols" unless param_list.all? { |p| p.kind_of?(::String) || p.kind_of?(::Symbol) }
|
438
540
|
else
|
439
541
|
|
440
|
-
warn "param_list (#{param_list.class}) must be nil or an instance of #{ApplicationLayer::ParamNameList}" unless param_list
|
542
|
+
warn "#{fn}: param_list (#{param_list.class}) must be nil or an instance of #{ApplicationLayer::ParamNameList}" unless param_list
|
441
543
|
end
|
442
544
|
|
443
|
-
fl = nil
|
444
|
-
rx = nil
|
445
|
-
fn = caller(call_depth + 1, 1)[0]
|
446
|
-
|
447
545
|
if ::Class === prefix_provider
|
448
546
|
|
449
547
|
rx = "#{prefix_provider}::"
|
data/lib/pantheios/globals.rb
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
# Purpose: The Pantheios.Ruby "globals" (::Pantheios::Globals)
|
6
6
|
#
|
7
7
|
# Created: 24th December 2017
|
8
|
-
# Updated:
|
8
|
+
# Updated: 4th February 2018
|
9
9
|
#
|
10
10
|
# Home: http://github.com/synesissoftware/Pantheios-Ruby
|
11
11
|
#
|
@@ -57,11 +57,24 @@ module Pantheios
|
|
57
57
|
#
|
58
58
|
# === Variables
|
59
59
|
#
|
60
|
+
# * *MAIN_THREAD_NAME* A string specifying the main thread name, or an array
|
61
|
+
# containing a thread instance and a string specifying the thread and its
|
62
|
+
# name
|
63
|
+
#
|
64
|
+
# NOTE: This feature is subject to the initialising threads: if the string
|
65
|
+
# form is used then the first initialising thread of Pantheios.Ruby will
|
66
|
+
# be the named thread
|
67
|
+
#
|
60
68
|
# * *HAS_CASCADED_INCLUDES* [boolean] Determines whether including
|
61
69
|
# +::Pantheios+ also includes all relevant parts of subordinate
|
62
70
|
# namespaces. See the documentation for the +::Pantheios+ namespace for
|
63
71
|
# further details
|
64
72
|
#
|
73
|
+
# * *PROCESS_NAME* A string specifying the process name, or one of the
|
74
|
+
# recognised symbols - :script, :script_basename, :script_dirname,
|
75
|
+
# :script_realpath, :script_stem - that directs inference of the process
|
76
|
+
# name. See +Pantheios::Util::ProcessUtil::derive_process_name+
|
77
|
+
#
|
65
78
|
# * *SYNCHRONISED_SEVERITY_LOGGED* [boolean] Determines whether the core
|
66
79
|
# protects the call to the underlying log-service's +severity_logged?+
|
67
80
|
# with a mutex (which has a non-trivial cost).
|
@@ -70,8 +83,10 @@ module Globals
|
|
70
83
|
|
71
84
|
module Internals_
|
72
85
|
|
73
|
-
BOOLEAN_CLASSES
|
74
|
-
TRUTHY_CLASSES
|
86
|
+
BOOLEAN_CLASSES = [ ::FalseClass, ::TrueClass ]
|
87
|
+
TRUTHY_CLASSES = BOOLEAN_CLASSES + [ ::NilClass ]
|
88
|
+
|
89
|
+
PROCESS_NAME_CLASSES = [ ::Symbol, ::String ]
|
75
90
|
end
|
76
91
|
|
77
92
|
module Helpers_
|
@@ -117,6 +132,10 @@ module Globals
|
|
117
132
|
|
118
133
|
Helpers_.cattr self, 'INITIAL_SERVICE_CLASSES', nil, nil
|
119
134
|
|
135
|
+
Helpers_.cattr self, 'MAIN_THREAD_NAME', [ ::Array, ::String ], nil
|
136
|
+
|
137
|
+
Helpers_.cattr self, 'PROCESS_NAME', Internals_::PROCESS_NAME_CLASSES, nil
|
138
|
+
|
120
139
|
Helpers_.cattr self, 'SYNCHRONISED_SEVERITY_LOGGED', nil, true, boolean: true
|
121
140
|
|
122
141
|
def self.included receiver
|