pantheios-ruby 0.20.2 → 0.22.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE +31 -0
- data/README.md +5 -0
- data/examples/coloured_console_log_service.rb +37 -0
- data/examples/multiple_modules.md +204 -0
- data/examples/multiple_modules.rb +132 -0
- data/examples/simple_logging.md +65 -0
- data/examples/simple_logging.rb +37 -0
- data/examples/threshold_front_end.rb +48 -0
- data/lib/pantheios.rb +3 -2
- data/lib/pantheios/api.rb +23 -6
- data/lib/pantheios/application_layer.rb +2 -1
- data/lib/pantheios/application_layer/param_name_list.rb +9 -0
- data/lib/pantheios/application_layer/stock_severity_levels.rb +99 -31
- data/lib/pantheios/core.rb +55 -24
- data/lib/pantheios/front_ends/threshold_front_end.rb +148 -0
- data/lib/pantheios/globals.rb +20 -9
- data/lib/pantheios/services/coloured_console_log_service.rb +204 -0
- data/lib/pantheios/services/common/console.rb +92 -0
- data/lib/pantheios/services/multiplexing_log_service.rb +42 -3
- data/lib/pantheios/services/null_log_service.rb +3 -2
- data/lib/pantheios/services/simple_console_log_service.rb +4 -3
- data/lib/pantheios/services/simple_file_log_service.rb +3 -4
- data/lib/pantheios/services/standard_log_service_adapter.rb +3 -2
- data/lib/pantheios/util/process_util.rb +3 -3
- data/lib/pantheios/util/reflection_util.rb +3 -0
- data/lib/pantheios/util/thread_util.rb +2 -0
- data/lib/pantheios/util/version_util.rb +1 -0
- data/lib/pantheios/version.rb +3 -2
- data/test/unit/application_layer/tc_stock_severity_levels.rb +67 -0
- data/test/unit/front_ends/tc_threshold_front_end.rb +102 -0
- data/test/unit/front_ends/ts_all.rb +12 -0
- data/test/unit/services/tc_multiplexing_log_service.rb +4 -4
- metadata +21 -7
@@ -0,0 +1,37 @@
|
|
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
|
+
require 'pantheios/services/simple_console_log_service'
|
9
|
+
|
10
|
+
# globals
|
11
|
+
|
12
|
+
Pantheios::Globals.INITIAL_SERVICE_CLASSES = [ Pantheios::Services::SimpleConsoleLogService ]
|
13
|
+
Pantheios::Globals.MAIN_THREAD_NAME = [ Thread.current, 'main' ]
|
14
|
+
Pantheios::Globals.PROCESS_NAME = :script_stem
|
15
|
+
|
16
|
+
# requires (1)
|
17
|
+
|
18
|
+
require 'pantheios'
|
19
|
+
|
20
|
+
# includes
|
21
|
+
|
22
|
+
include ::Pantheios
|
23
|
+
|
24
|
+
# constants
|
25
|
+
|
26
|
+
LEVELS = %i{ violation alert critical failure warning notice informational debug0 debug1 debug2 debug3 debug4 debug5 benchmark }
|
27
|
+
|
28
|
+
# main
|
29
|
+
|
30
|
+
LEVELS.each do |level|
|
31
|
+
|
32
|
+
log(level, "logging level #{level}")
|
33
|
+
end
|
34
|
+
|
35
|
+
# ############################## end of file ############################# #
|
36
|
+
|
37
|
+
|
@@ -0,0 +1,48 @@
|
|
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
|
+
require 'pantheios/front_ends/threshold_front_end'
|
9
|
+
require 'pantheios/services/coloured_console_log_service'
|
10
|
+
|
11
|
+
# globals
|
12
|
+
|
13
|
+
Pantheios::Globals.INITIAL_SERVICE_CLASSES = [ Pantheios::Services::ColouredConsoleLogService ]
|
14
|
+
Pantheios::Globals.MAIN_THREAD_NAME = [ Thread.current, 'main' ]
|
15
|
+
Pantheios::Globals.PROCESS_NAME = :script_stem
|
16
|
+
|
17
|
+
# requires (1)
|
18
|
+
|
19
|
+
require 'pantheios'
|
20
|
+
|
21
|
+
# includes
|
22
|
+
|
23
|
+
include ::Pantheios
|
24
|
+
|
25
|
+
# constants
|
26
|
+
|
27
|
+
LEVELS = %i{ violation alert critical failure warning notice informational debug0 debug1 debug2 debug3 debug4 debug5 trace }
|
28
|
+
|
29
|
+
# command-line
|
30
|
+
|
31
|
+
abort "USAGE: #$0 <threshold>" unless 1 == ARGV.size
|
32
|
+
|
33
|
+
threshold = ARGV[0].to_sym
|
34
|
+
|
35
|
+
puts "threshold: :#{threshold}"
|
36
|
+
|
37
|
+
Pantheios::Core.set_front_end Pantheios::FrontEnds::ThresholdFrontEnd.new threshold
|
38
|
+
|
39
|
+
# main
|
40
|
+
|
41
|
+
LEVELS.each do |level|
|
42
|
+
|
43
|
+
log(level, "logging level #{level}")
|
44
|
+
end
|
45
|
+
|
46
|
+
# ############################## end of file ############################# #
|
47
|
+
|
48
|
+
|
data/lib/pantheios.rb
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
# +Pantheios::API+, +Pantheios::ApplicationLayer+, and +Pantheios::Util+ (as
|
7
7
|
# well as certain sub modules of +Pantheios::Util+; see +Pantheios::Util+
|
8
8
|
# for details), unless the global symbol
|
9
|
-
# +::Pantheios::Globals.HAS_CASCADED_INCLUDES+ is
|
9
|
+
# +::Pantheios::Globals.HAS_CASCADED_INCLUDES+ is falsey
|
10
10
|
module Pantheios
|
11
11
|
end # module Pantheios
|
12
12
|
|
@@ -19,7 +19,8 @@ require 'pantheios/version'
|
|
19
19
|
|
20
20
|
module Pantheios
|
21
21
|
|
22
|
-
|
22
|
+
# @!visibility private
|
23
|
+
def self.included receiver # :nodoc:
|
23
24
|
|
24
25
|
if ::Pantheios::Globals.HAS_CASCADED_INCLUDES
|
25
26
|
|
data/lib/pantheios/api.rb
CHANGED
@@ -5,13 +5,13 @@
|
|
5
5
|
# Purpose: The Pantheios.Ruby API (::Pantheios::API)
|
6
6
|
#
|
7
7
|
# Created: 2nd April 2011
|
8
|
-
# Updated:
|
8
|
+
# Updated: 4th June 2020
|
9
9
|
#
|
10
10
|
# Home: http://github.com/synesissoftware/Pantheios-Ruby
|
11
11
|
#
|
12
12
|
# Author: Matthew Wilson
|
13
13
|
#
|
14
|
-
# Copyright (c) 2011-
|
14
|
+
# Copyright (c) 2011-2019, Matthew Wilson and Synesis Software
|
15
15
|
# All rights reserved.
|
16
16
|
#
|
17
17
|
# Redistribution and use in source and binary forms, with or without
|
@@ -47,7 +47,6 @@
|
|
47
47
|
=begin
|
48
48
|
=end
|
49
49
|
|
50
|
-
|
51
50
|
require 'pantheios/application_layer/param_name_list'
|
52
51
|
require 'pantheios/application_layer/stock_severity_levels'
|
53
52
|
require 'pantheios/util/version_util'
|
@@ -74,6 +73,8 @@ module Pantheios
|
|
74
73
|
# - severity_string severity
|
75
74
|
# - thread_id
|
76
75
|
# - timestamp t
|
76
|
+
# - prefix_parts
|
77
|
+
# - prefix
|
77
78
|
module API
|
78
79
|
|
79
80
|
# Logs an arbitrary set of parameters at the given severity level
|
@@ -217,7 +218,13 @@ module API
|
|
217
218
|
::Pantheios::Core.timestamp t, nil
|
218
219
|
end
|
219
220
|
|
220
|
-
|
221
|
+
# Assembles the prefix according to +prefix_elements+ into an array of
|
222
|
+
# parts
|
223
|
+
#
|
224
|
+
# * *Parameters:*
|
225
|
+
# - +t+ [ Date, Time, DateTime ] The timestamp of the log entry
|
226
|
+
# - +severity+ The severity
|
227
|
+
def prefix_parts t, severity
|
221
228
|
|
222
229
|
prefix_elements.map do |el|
|
223
230
|
|
@@ -245,11 +252,21 @@ module API
|
|
245
252
|
|
246
253
|
nil
|
247
254
|
end
|
248
|
-
end
|
255
|
+
end
|
249
256
|
end
|
250
257
|
|
258
|
+
# Assembles the +prefix_parts+ into a string
|
259
|
+
#
|
260
|
+
# * *Parameters:*
|
261
|
+
# - +t+ [ Date, Time, DateTime ] The timestamp of the log entry
|
262
|
+
# - +severity+ The severity
|
263
|
+
def prefix t, severity
|
264
|
+
|
265
|
+
prefix_parts(t, severity).join(', ')
|
266
|
+
end
|
251
267
|
|
252
|
-
|
268
|
+
# @!visibility private
|
269
|
+
def self.included receiver # :nodoc:
|
253
270
|
|
254
271
|
receiver.extend self
|
255
272
|
|
@@ -2,9 +2,18 @@
|
|
2
2
|
module Pantheios
|
3
3
|
module ApplicationLayer
|
4
4
|
|
5
|
+
# Type-distinct +::Array+ for use with tracing, as in
|
6
|
+
#
|
7
|
+
# def my_func arg1, arg2, **options
|
8
|
+
#
|
9
|
+
# trace ParamNames [ :arg1, :arg2, :options ], arg1, arg2, options
|
10
|
+
#
|
11
|
+
# end
|
12
|
+
#
|
5
13
|
class ParamNameList < Array
|
6
14
|
end
|
7
15
|
|
16
|
+
# Another name for +ParamNameList+
|
8
17
|
ParamNames = ParamNameList
|
9
18
|
|
10
19
|
end # module ApplicationLayer
|
@@ -7,12 +7,13 @@
|
|
7
7
|
# namespace module
|
8
8
|
#
|
9
9
|
# Created: 2nd April 2011
|
10
|
-
# Updated:
|
10
|
+
# Updated: 4th June 2020
|
11
11
|
#
|
12
12
|
# Home: http://github.com/synesissoftware/Pantheios-Ruby
|
13
13
|
#
|
14
14
|
# Author: Matthew Wilson
|
15
15
|
#
|
16
|
+
# Copyright (c) 2019-2020, Matthew Wilson and Synesis Information Systems
|
16
17
|
# Copyright (c) 2011-2018, Matthew Wilson and Synesis Software
|
17
18
|
# All rights reserved.
|
18
19
|
#
|
@@ -55,33 +56,37 @@ module ApplicationLayer
|
|
55
56
|
module StockSeverityLevels
|
56
57
|
|
57
58
|
private
|
58
|
-
|
59
|
+
# @!visibility private
|
60
|
+
module Internal_ # :nodoc: all
|
59
61
|
|
62
|
+
# @!visibility private
|
60
63
|
STOCK_SEVERITY_LEVELS_ = {
|
61
64
|
|
62
|
-
:violation => [ 1, 'Violation', [ :emergency ] ],
|
63
|
-
:alert => [ 2, 'Alert' ],
|
64
|
-
:critical => [ 3, 'Critical' ],
|
65
|
-
:failure => [ 4, 'Failure' ],
|
66
|
-
:warning => [ 5, 'Warning', [ :warn ] ],
|
67
|
-
:notice => [ 6, 'Notice' ],
|
68
|
-
:informational => [ 7, 'Informational', [ :info ] ],
|
69
|
-
:debug0 => [ 8, 'Debug-0' ],
|
70
|
-
:debug1 => [ 9, 'Debug-1' ],
|
71
|
-
:debug2 => [ 10, 'Debug-2' ],
|
72
|
-
:debug3 => [ 11, 'Debug-3' ],
|
73
|
-
:debug4 => [ 12, 'Debug-4' ],
|
74
|
-
:
|
75
|
-
:
|
65
|
+
:violation => [ 1, 'Violation', :relative, [ :emergency ] ],
|
66
|
+
:alert => [ 2, 'Alert', :relative ],
|
67
|
+
:critical => [ 3, 'Critical', :relative ],
|
68
|
+
:failure => [ 4, 'Failure', :relative, [ :fail ] ],
|
69
|
+
:warning => [ 5, 'Warning', :relative, [ :warn ] ],
|
70
|
+
:notice => [ 6, 'Notice', :relative ],
|
71
|
+
:informational => [ 7, 'Informational', :relative, [ :info ] ],
|
72
|
+
:debug0 => [ 8, 'Debug-0', :relative ],
|
73
|
+
:debug1 => [ 9, 'Debug-1', :relative ],
|
74
|
+
:debug2 => [ 10, 'Debug-2', :relative ],
|
75
|
+
:debug3 => [ 11, 'Debug-3', :relative ],
|
76
|
+
:debug4 => [ 12, 'Debug-4', :relative ],
|
77
|
+
:debug5 => [ 13, 'Debug-5', :relative ],
|
78
|
+
:trace => [ 15, 'Trace', :relative ],
|
79
|
+
:benchmark => [ 16, 'Benchmark', :separate ],
|
76
80
|
}
|
77
81
|
|
78
|
-
|
82
|
+
# @!visibility private
|
83
|
+
def self.create_level_keys m # :nodoc:
|
79
84
|
|
80
85
|
r = m.keys
|
81
86
|
|
82
87
|
m.each do |k, ar|
|
83
88
|
|
84
|
-
(ar[
|
89
|
+
(ar[3] || []).each do |al|
|
85
90
|
|
86
91
|
r << al
|
87
92
|
end
|
@@ -90,16 +95,17 @@ module StockSeverityLevels
|
|
90
95
|
r.uniq
|
91
96
|
end
|
92
97
|
|
93
|
-
|
98
|
+
# @!visibility private
|
99
|
+
def self.create_level_value_map m # :nodoc:
|
94
100
|
|
95
101
|
r = {}
|
96
102
|
|
97
|
-
m.each do |
|
103
|
+
m.each do |sev, ar|
|
98
104
|
|
99
|
-
warn 'invalid start-up' unless ::Symbol ===
|
105
|
+
warn 'invalid start-up' unless ::Symbol === sev
|
100
106
|
warn 'invalid start-up' unless ::Array === ar
|
101
107
|
|
102
|
-
([
|
108
|
+
([sev] + (ar[3] || [])).each do |al|
|
103
109
|
|
104
110
|
r[al] = ar[0]
|
105
111
|
end
|
@@ -107,18 +113,71 @@ module StockSeverityLevels
|
|
107
113
|
|
108
114
|
r
|
109
115
|
end
|
110
|
-
|
116
|
+
|
117
|
+
# @!visibility private
|
118
|
+
def self.create_level_string_map m # :nodoc:
|
119
|
+
|
120
|
+
r = {}
|
121
|
+
|
122
|
+
m.each do |sev, ar|
|
123
|
+
|
124
|
+
warn 'invalid start-up' unless ::Symbol === sev
|
125
|
+
warn 'invalid start-up' unless ::Array === ar
|
126
|
+
|
127
|
+
([sev] + (ar[3] || [])).each do |al|
|
128
|
+
|
129
|
+
s = ar[1]
|
130
|
+
|
131
|
+
s.define_singleton_method(:severity) { sev }
|
132
|
+
|
133
|
+
r[al] = s
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
r
|
138
|
+
end
|
139
|
+
|
140
|
+
# @!visibility private
|
141
|
+
def self.create_level_aliases m # :nodoc:
|
142
|
+
|
143
|
+
r = {}
|
144
|
+
|
145
|
+
m.each do |sev, ar|
|
146
|
+
|
147
|
+
warn 'invalid start-up' unless ::Symbol === sev
|
148
|
+
warn 'invalid start-up' unless ::Array === ar
|
149
|
+
|
150
|
+
([sev] + (ar[3] || [])).each do |al|
|
151
|
+
|
152
|
+
r[al] = sev
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
156
|
+
r
|
157
|
+
end
|
158
|
+
|
159
|
+
# @!visibility private
|
160
|
+
def self.create_level_relative_map m # :nodoc:
|
111
161
|
|
112
162
|
r = {}
|
113
163
|
|
114
|
-
m.each do |
|
164
|
+
m.each do |sev, ar|
|
115
165
|
|
116
|
-
warn 'invalid start-up' unless ::Symbol ===
|
166
|
+
warn 'invalid start-up' unless ::Symbol === sev
|
117
167
|
warn 'invalid start-up' unless ::Array === ar
|
118
168
|
|
119
|
-
|
169
|
+
relativity = ar[2]
|
170
|
+
|
171
|
+
case relativity
|
172
|
+
when :relative
|
120
173
|
|
121
|
-
|
174
|
+
([sev] + (ar[3] || [])).each do |al|
|
175
|
+
|
176
|
+
r[al] = relativity
|
177
|
+
end
|
178
|
+
else
|
179
|
+
|
180
|
+
;
|
122
181
|
end
|
123
182
|
end
|
124
183
|
|
@@ -127,17 +186,26 @@ module StockSeverityLevels
|
|
127
186
|
end
|
128
187
|
public
|
129
188
|
|
130
|
-
# Ordered list of stock severity
|
189
|
+
# Ordered list of stock severity level symbols, without any aliases
|
131
190
|
STOCK_SEVERITY_LEVELS_PRIME = Internal_::STOCK_SEVERITY_LEVELS_.keys
|
132
191
|
|
133
|
-
#
|
192
|
+
# Unordered list of stock severity levels, some of which may be aliases
|
134
193
|
STOCK_SEVERITY_LEVELS = Internal_.create_level_keys Internal_::STOCK_SEVERITY_LEVELS_
|
135
194
|
|
136
|
-
# Mapping of severity
|
195
|
+
# Mapping of severity level aliases - with may be symbols and strings -
|
196
|
+
# to the prime stock severity level symbols
|
197
|
+
STOCK_SEVERITY_LEVEL_ALIASES = Internal_.create_level_aliases Internal_::STOCK_SEVERITY_LEVELS_
|
198
|
+
|
199
|
+
# Mapping of severity level aliases - with may be symbols and strings -
|
200
|
+
# containing only those levels that are relative, i.e. may participate
|
201
|
+
# meaningfully in a threshold-based filtering
|
202
|
+
STOCK_SEVERITY_LEVELS_RELATIVE = Internal_.create_level_relative_map Internal_::STOCK_SEVERITY_LEVELS_
|
203
|
+
|
204
|
+
# Mapping of severity level (and level alias) symbols to integral
|
137
205
|
# equivalent
|
138
206
|
STOCK_SEVERITY_LEVEL_VALUES = Internal_.create_level_value_map Internal_::STOCK_SEVERITY_LEVELS_
|
139
207
|
|
140
|
-
# Mapping of severity
|
208
|
+
# Mapping of severity level (and level alias) symbols to string
|
141
209
|
STOCK_SEVERITY_LEVEL_STRINGS = Internal_.create_level_string_map Internal_::STOCK_SEVERITY_LEVELS_
|
142
210
|
|
143
211
|
end # module StockSeverityLevels
|
data/lib/pantheios/core.rb
CHANGED
@@ -5,12 +5,13 @@
|
|
5
5
|
# Purpose: The Pantheios.Ruby core (::Pantheios::Core)
|
6
6
|
#
|
7
7
|
# Created: 2nd April 2011
|
8
|
-
# Updated:
|
8
|
+
# Updated: 4th June 2020
|
9
9
|
#
|
10
10
|
# Home: http://github.com/synesissoftware/Pantheios-Ruby
|
11
11
|
#
|
12
12
|
# Author: Matthew Wilson
|
13
13
|
#
|
14
|
+
# Copyright (c) 2019-2020, Matthew Wilson and Synesis Information Systems
|
14
15
|
# Copyright (c) 2011-2018, Matthew Wilson and Synesis Software
|
15
16
|
# All rights reserved.
|
16
17
|
#
|
@@ -60,7 +61,8 @@ require 'pantheios/util/thread_util'
|
|
60
61
|
module Pantheios
|
61
62
|
module Core
|
62
63
|
|
63
|
-
|
64
|
+
# @!visibility private
|
65
|
+
module Constants_ # :nodoc: all
|
64
66
|
|
65
67
|
REQUIRED_SERVICE_METHODS = %w{ severity_logged? log }.map { |name| name.to_sym }
|
66
68
|
REQUIRED_FRONTEND_METHODS = %w{ severity_logged? }.map { |name| name.to_sym }
|
@@ -68,9 +70,11 @@ module Core
|
|
68
70
|
|
69
71
|
end # module Constants_
|
70
72
|
|
71
|
-
|
73
|
+
# @!visibility private
|
74
|
+
module Internals_ # :nodoc: all
|
72
75
|
|
73
|
-
|
76
|
+
# @!visibility private
|
77
|
+
class DefaultDiscriminator # :nodoc:
|
74
78
|
|
75
79
|
def severity_logged? severity
|
76
80
|
|
@@ -87,8 +91,8 @@ module Core
|
|
87
91
|
end
|
88
92
|
end
|
89
93
|
|
90
|
-
#
|
91
|
-
class State
|
94
|
+
# @!visibility private
|
95
|
+
class State # :nodoc:
|
92
96
|
|
93
97
|
def initialize default_fe, **options
|
94
98
|
|
@@ -122,7 +126,7 @@ module Core
|
|
122
126
|
raise ::TypeError, "back-end instance (#{fe.class}) does not respond to all the required messages ([ #{Constants_::REQUIRED_BACKEND_METHODS.join(', ')} ])" unless be && Constants_::REQUIRED_BACKEND_METHODS.all? { |m| be.respond_to? m }
|
123
127
|
|
124
128
|
r = nil
|
125
|
-
srp =
|
129
|
+
srp = be.respond_to?(:requires_prefix?) ? be.requires_prefix? : true
|
126
130
|
|
127
131
|
@mx_service.synchronize do
|
128
132
|
|
@@ -196,16 +200,17 @@ module Core
|
|
196
200
|
attr_reader :front_end
|
197
201
|
attr_reader :back_end
|
198
202
|
def requires_prefix?; @requires_prefix; end
|
199
|
-
end
|
203
|
+
end # class State
|
200
204
|
end # module Internals_
|
201
205
|
|
202
|
-
|
206
|
+
# @!visibility private
|
207
|
+
def self.included receiver # :nodoc:
|
203
208
|
|
204
209
|
abort "Attempt to include #{self} into #{receiver}. This is not allowed"
|
205
210
|
end
|
206
211
|
|
207
|
-
#
|
208
|
-
def self.core_init
|
212
|
+
# @!visibility private
|
213
|
+
def self.core_init # :nodoc:
|
209
214
|
|
210
215
|
# process-name
|
211
216
|
|
@@ -276,8 +281,8 @@ module Core
|
|
276
281
|
self.set_default_service
|
277
282
|
end
|
278
283
|
|
279
|
-
#
|
280
|
-
def self.set_default_service **options
|
284
|
+
# @!visibility private
|
285
|
+
def self.set_default_service **options # :nodoc:
|
281
286
|
|
282
287
|
# determine which log service to initialise as the default
|
283
288
|
|
@@ -462,7 +467,9 @@ module Core
|
|
462
467
|
|
463
468
|
|
464
469
|
# Internal implementation method, not to be called by application code
|
465
|
-
|
470
|
+
#
|
471
|
+
# @!visibility private
|
472
|
+
def self.get_block_value_ &block # :nodoc:
|
466
473
|
|
467
474
|
case block.arity
|
468
475
|
when 0
|
@@ -486,7 +493,9 @@ module Core
|
|
486
493
|
end
|
487
494
|
|
488
495
|
# Internal implementation method, not to be called by application code
|
489
|
-
|
496
|
+
#
|
497
|
+
# @!visibility private
|
498
|
+
def self.log_v_impl prefix_provider, severity, argv, &block # :nodoc:
|
490
499
|
|
491
500
|
argv << get_block_value_(&block) if block_given?
|
492
501
|
|
@@ -494,7 +503,9 @@ module Core
|
|
494
503
|
end
|
495
504
|
|
496
505
|
# Internal implementation method, not to be called by application code
|
497
|
-
|
506
|
+
#
|
507
|
+
# @!visibility private
|
508
|
+
def self.trace_v_impl prefix_provider, call_depth, param_list, severity, argv, &block # :nodoc:
|
498
509
|
|
499
510
|
unless param_list
|
500
511
|
|
@@ -527,20 +538,21 @@ module Core
|
|
527
538
|
end
|
528
539
|
end
|
529
540
|
|
541
|
+
fl = nil
|
542
|
+
rx = nil
|
543
|
+
fn = caller(call_depth + 1, 1)[0]
|
544
|
+
|
530
545
|
case param_list
|
531
546
|
when nil
|
532
547
|
;
|
533
548
|
when ApplicationLayer::ParamNameList
|
534
|
-
|
549
|
+
|
550
|
+
warn "#{fn}: param_list must contain only strings or symbols" unless param_list.all? { |p| p.kind_of?(::String) || p.kind_of?(::Symbol) }
|
535
551
|
else
|
536
552
|
|
537
|
-
warn "param_list (#{param_list.class}) must be nil or an instance of #{ApplicationLayer::ParamNameList}" unless param_list
|
553
|
+
warn "#{fn}: param_list (#{param_list.class}) must be nil or an instance of #{ApplicationLayer::ParamNameList}" unless param_list
|
538
554
|
end
|
539
555
|
|
540
|
-
fl = nil
|
541
|
-
rx = nil
|
542
|
-
fn = caller(call_depth + 1, 1)[0]
|
543
|
-
|
544
556
|
if ::Class === prefix_provider
|
545
557
|
|
546
558
|
rx = "#{prefix_provider}::"
|
@@ -590,11 +602,30 @@ module Core
|
|
590
602
|
end
|
591
603
|
|
592
604
|
# Internal implementation method, not to be called by application code
|
593
|
-
|
605
|
+
#
|
606
|
+
# @!visibility private
|
607
|
+
def self.log_raw prefix_provider, severity, message # :nodoc:
|
594
608
|
|
595
609
|
now = Time.now
|
596
610
|
|
597
|
-
|
611
|
+
srp = @@state.requires_prefix?
|
612
|
+
|
613
|
+
case srp
|
614
|
+
when false
|
615
|
+
|
616
|
+
prf = nil
|
617
|
+
when true
|
618
|
+
|
619
|
+
prf = '[' + prefix_provider.prefix(now, severity) + ']: '
|
620
|
+
when :parts
|
621
|
+
|
622
|
+
prf = prefix_provider.prefix_parts(now, severity)
|
623
|
+
else
|
624
|
+
|
625
|
+
warn "invalid value '#{srp}' returned by #requires_prefix? of the Pantheios Core's state's service (which is of type #{@@state.service.class}"
|
626
|
+
|
627
|
+
prf = nil
|
628
|
+
end
|
598
629
|
|
599
630
|
@@state.back_end.log severity, now, prf, message
|
600
631
|
end
|