pantheios-ruby 0.21.0 → 0.22.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 +4 -4
- data/examples/coloured_console_log_service.rb +37 -0
- data/examples/simple_logging.rb +3 -1
- data/lib/pantheios/api.rb +21 -5
- data/lib/pantheios/application_layer/stock_severity_levels.rb +19 -15
- data/lib/pantheios/core.rb +22 -4
- 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 +40 -2
- 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 -2
- data/lib/pantheios/services/standard_log_service_adapter.rb +3 -2
- data/lib/pantheios/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 554c2a9920c4d3459aac5f8a222cc862547f397d
|
4
|
+
data.tar.gz: 8edd3f22884716113a84f5291092d25f4be684bb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bf9014bf59fbc49c97509b72fa4f6acbc5b96582ee078598c9f98c83c9a2c691220cf19665da1173859e187b806ff5639192ebe6e409d672e9e4a3d75b95bc7b
|
7
|
+
data.tar.gz: 9ce3d10428dd953ba201eec61a32bc4172d341fa9e0bb8332df2685fa902595429f1be41c692bc34c21780962be452e9b0a8d66e35125b2df8eb9dee2ee6df9b
|
@@ -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/coloured_console_log_service'
|
9
|
+
|
10
|
+
# globals
|
11
|
+
|
12
|
+
Pantheios::Globals.INITIAL_SERVICE_CLASSES = [ Pantheios::Services::ColouredConsoleLogService ]
|
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
|
+
|
data/examples/simple_logging.rb
CHANGED
@@ -5,9 +5,11 @@ $:.unshift File.join(File.dirname(__FILE__), *([ '..' ] * 1), 'lib')
|
|
5
5
|
# requires (0)
|
6
6
|
|
7
7
|
require 'pantheios/globals'
|
8
|
+
require 'pantheios/services/simple_console_log_service'
|
8
9
|
|
9
10
|
# globals
|
10
11
|
|
12
|
+
Pantheios::Globals.INITIAL_SERVICE_CLASSES = [ Pantheios::Services::SimpleConsoleLogService ]
|
11
13
|
Pantheios::Globals.MAIN_THREAD_NAME = [ Thread.current, 'main' ]
|
12
14
|
Pantheios::Globals.PROCESS_NAME = :script_stem
|
13
15
|
|
@@ -21,7 +23,7 @@ include ::Pantheios
|
|
21
23
|
|
22
24
|
# constants
|
23
25
|
|
24
|
-
LEVELS = %i{ violation alert critical failure warning notice informational debug0 debug1 debug2 debug3 debug4 }
|
26
|
+
LEVELS = %i{ violation alert critical failure warning notice informational debug0 debug1 debug2 debug3 debug4 debug5 benchmark }
|
25
27
|
|
26
28
|
# main
|
27
29
|
|
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,9 +252,18 @@ 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
|
def self.included receiver
|
253
269
|
|
@@ -7,7 +7,7 @@
|
|
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
|
#
|
@@ -96,12 +96,12 @@ module StockSeverityLevels
|
|
96
96
|
|
97
97
|
r = {}
|
98
98
|
|
99
|
-
m.each do |
|
99
|
+
m.each do |sev, ar|
|
100
100
|
|
101
|
-
warn 'invalid start-up' unless ::Symbol ===
|
101
|
+
warn 'invalid start-up' unless ::Symbol === sev
|
102
102
|
warn 'invalid start-up' unless ::Array === ar
|
103
103
|
|
104
|
-
([
|
104
|
+
([sev] + (ar[3] || [])).each do |al|
|
105
105
|
|
106
106
|
r[al] = ar[0]
|
107
107
|
end
|
@@ -114,14 +114,18 @@ module StockSeverityLevels
|
|
114
114
|
|
115
115
|
r = {}
|
116
116
|
|
117
|
-
m.each do |
|
117
|
+
m.each do |sev, ar|
|
118
118
|
|
119
|
-
warn 'invalid start-up' unless ::Symbol ===
|
119
|
+
warn 'invalid start-up' unless ::Symbol === sev
|
120
120
|
warn 'invalid start-up' unless ::Array === ar
|
121
121
|
|
122
|
-
([
|
122
|
+
([sev] + (ar[3] || [])).each do |al|
|
123
123
|
|
124
|
-
|
124
|
+
s = ar[1]
|
125
|
+
|
126
|
+
s.define_singleton_method(:severity) { sev }
|
127
|
+
|
128
|
+
r[al] = s
|
125
129
|
end
|
126
130
|
end
|
127
131
|
|
@@ -132,14 +136,14 @@ module StockSeverityLevels
|
|
132
136
|
|
133
137
|
r = {}
|
134
138
|
|
135
|
-
m.each do |
|
139
|
+
m.each do |sev, ar|
|
136
140
|
|
137
|
-
warn 'invalid start-up' unless ::Symbol ===
|
141
|
+
warn 'invalid start-up' unless ::Symbol === sev
|
138
142
|
warn 'invalid start-up' unless ::Array === ar
|
139
143
|
|
140
|
-
([
|
144
|
+
([sev] + (ar[3] || [])).each do |al|
|
141
145
|
|
142
|
-
r[al] =
|
146
|
+
r[al] = sev
|
143
147
|
end
|
144
148
|
end
|
145
149
|
|
@@ -150,9 +154,9 @@ module StockSeverityLevels
|
|
150
154
|
|
151
155
|
r = {}
|
152
156
|
|
153
|
-
m.each do |
|
157
|
+
m.each do |sev, ar|
|
154
158
|
|
155
|
-
warn 'invalid start-up' unless ::Symbol ===
|
159
|
+
warn 'invalid start-up' unless ::Symbol === sev
|
156
160
|
warn 'invalid start-up' unless ::Array === ar
|
157
161
|
|
158
162
|
relativity = ar[2]
|
@@ -160,7 +164,7 @@ module StockSeverityLevels
|
|
160
164
|
case relativity
|
161
165
|
when :relative
|
162
166
|
|
163
|
-
([
|
167
|
+
([sev] + (ar[3] || [])).each do |al|
|
164
168
|
|
165
169
|
r[al] = relativity
|
166
170
|
end
|
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
|
#
|
@@ -122,7 +123,7 @@ module Core
|
|
122
123
|
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
124
|
|
124
125
|
r = nil
|
125
|
-
srp =
|
126
|
+
srp = be.respond_to?(:requires_prefix?) ? be.requires_prefix? : true
|
126
127
|
|
127
128
|
@mx_service.synchronize do
|
128
129
|
|
@@ -196,7 +197,7 @@ module Core
|
|
196
197
|
attr_reader :front_end
|
197
198
|
attr_reader :back_end
|
198
199
|
def requires_prefix?; @requires_prefix; end
|
199
|
-
end
|
200
|
+
end # class State
|
200
201
|
end # module Internals_
|
201
202
|
|
202
203
|
def self.included receiver
|
@@ -595,7 +596,24 @@ module Core
|
|
595
596
|
|
596
597
|
now = Time.now
|
597
598
|
|
598
|
-
|
599
|
+
srp = @@state.requires_prefix?
|
600
|
+
|
601
|
+
case srp
|
602
|
+
when false
|
603
|
+
|
604
|
+
prf = nil
|
605
|
+
when true
|
606
|
+
|
607
|
+
prf = '[' + prefix_provider.prefix(now, severity) + ']: '
|
608
|
+
when :parts
|
609
|
+
|
610
|
+
prf = prefix_provider.prefix_parts(now, severity)
|
611
|
+
else
|
612
|
+
|
613
|
+
warn "invalid value '#{srp}' returned by #requires_prefix? of the Pantheios Core's state's service (which is of type #{@@state.service.class}"
|
614
|
+
|
615
|
+
prf = nil
|
616
|
+
end
|
599
617
|
|
600
618
|
@@state.back_end.log severity, now, prf, message
|
601
619
|
end
|
@@ -0,0 +1,204 @@
|
|
1
|
+
|
2
|
+
# ######################################################################## #
|
3
|
+
# File: lib/pantheios/services/coloured_console_log_service.rb
|
4
|
+
#
|
5
|
+
# Purpose: Definition of the
|
6
|
+
# ::Pantheios::Services::ColouredConsoleLogService class
|
7
|
+
#
|
8
|
+
# Created: 19th June 2019
|
9
|
+
# Updated: 4th June 2020
|
10
|
+
#
|
11
|
+
# Home: http://github.com/synesissoftware/Pantheios-Ruby
|
12
|
+
#
|
13
|
+
# Author: Matthew Wilson
|
14
|
+
#
|
15
|
+
# Copyright (c) 2019-2020, Matthew Wilson and Synesis Information Systems
|
16
|
+
# Copyright (c) 2019, Matthew Wilson and Synesis Software
|
17
|
+
# All rights reserved.
|
18
|
+
#
|
19
|
+
# Redistribution and use in source and binary forms, with or without
|
20
|
+
# modification, are permitted provided that the following conditions are
|
21
|
+
# met:
|
22
|
+
#
|
23
|
+
# * Redistributions of source code must retain the above copyright
|
24
|
+
# notice, this list of conditions and the following disclaimer.
|
25
|
+
#
|
26
|
+
# * Redistributions in binary form must reproduce the above copyright
|
27
|
+
# notice, this list of conditions and the following disclaimer in the
|
28
|
+
# documentation and/or other materials provided with the distribution.
|
29
|
+
#
|
30
|
+
# * Neither the names of the copyright holder nor the names of its
|
31
|
+
# contributors may be used to endorse or promote products derived from
|
32
|
+
# this software without specific prior written permission.
|
33
|
+
#
|
34
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
35
|
+
# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
36
|
+
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
37
|
+
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
|
38
|
+
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
39
|
+
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
40
|
+
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
41
|
+
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
42
|
+
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
43
|
+
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
44
|
+
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
45
|
+
#
|
46
|
+
# ######################################################################## #
|
47
|
+
|
48
|
+
|
49
|
+
require 'pantheios/services/common/console'
|
50
|
+
|
51
|
+
=begin
|
52
|
+
=end
|
53
|
+
|
54
|
+
module Pantheios
|
55
|
+
module Services
|
56
|
+
|
57
|
+
# A class that fulfils the Pantheios *LogService* protocol that allows all
|
58
|
+
# severities and logs to the console (via +$stdout+ and +$stderr+)
|
59
|
+
#
|
60
|
+
# NOTE: The *LogService* protocol is implemented by a class that provides
|
61
|
+
# the instance methods +severity_logged?(severity : Object) : boolean+ and
|
62
|
+
# +log(severity : Object, t : Time, prefix : String|Array, msg : String)+
|
63
|
+
class ColouredConsoleLogService
|
64
|
+
|
65
|
+
module Constants
|
66
|
+
|
67
|
+
include ::Pantheios::Services::Common::Console::AnsiEscapeSequences
|
68
|
+
end # module Constants
|
69
|
+
|
70
|
+
def self.requires_prefix?
|
71
|
+
|
72
|
+
return @requires_prefix unless @requires_prefix.nil?
|
73
|
+
|
74
|
+
@requires_prefix = ::Pantheios::Services::Common::Console::Internal_::SHOULD_COLOURIZE_ ? :parts : false
|
75
|
+
end
|
76
|
+
|
77
|
+
def requires_prefix?
|
78
|
+
|
79
|
+
self.class.requires_prefix?
|
80
|
+
end
|
81
|
+
|
82
|
+
def severity_logged? severity
|
83
|
+
|
84
|
+
true
|
85
|
+
end
|
86
|
+
|
87
|
+
def log sev, t, pref, msg
|
88
|
+
|
89
|
+
stm = infer_stream sev
|
90
|
+
|
91
|
+
if requires_prefix?
|
92
|
+
|
93
|
+
pref = pref.map do |part|
|
94
|
+
|
95
|
+
bg = Constants::Background
|
96
|
+
fg = Constants::Foreground
|
97
|
+
|
98
|
+
if part.respond_to?(:severity)
|
99
|
+
|
100
|
+
part = fg.bold part
|
101
|
+
|
102
|
+
case sev
|
103
|
+
when :violation
|
104
|
+
|
105
|
+
part = bg.red part
|
106
|
+
#part = fg.bright_magenta part
|
107
|
+
part = fg.bright_yellow part
|
108
|
+
part = fg.blinking part
|
109
|
+
when :alert
|
110
|
+
|
111
|
+
part = bg.red part
|
112
|
+
part = fg.bright_cyan part
|
113
|
+
part = fg.blinking part
|
114
|
+
when :critical
|
115
|
+
|
116
|
+
part = bg.red part
|
117
|
+
part = fg.white part
|
118
|
+
when :failure
|
119
|
+
|
120
|
+
part = bg.yellow part
|
121
|
+
part = fg.red part
|
122
|
+
when :warning
|
123
|
+
|
124
|
+
part = bg.yellow part
|
125
|
+
part = fg.blue part
|
126
|
+
when :notice
|
127
|
+
|
128
|
+
part = bg.dark_grey part
|
129
|
+
part = fg.white part
|
130
|
+
when :informational
|
131
|
+
|
132
|
+
part = bg.dark_grey part
|
133
|
+
part = fg.light_grey part
|
134
|
+
when :debug0
|
135
|
+
|
136
|
+
part = bg.blue part
|
137
|
+
part = fg.light_grey part
|
138
|
+
when :debug1
|
139
|
+
|
140
|
+
part = bg.blue part
|
141
|
+
part = fg.light_grey part
|
142
|
+
when :debug2
|
143
|
+
|
144
|
+
part = bg.blue part
|
145
|
+
part = fg.light_grey part
|
146
|
+
when :debug3
|
147
|
+
|
148
|
+
part = bg.blue part
|
149
|
+
part = fg.light_grey part
|
150
|
+
when :debug4
|
151
|
+
|
152
|
+
part = bg.blue part
|
153
|
+
part = fg.light_grey part
|
154
|
+
when :debug5
|
155
|
+
|
156
|
+
part = bg.blue part
|
157
|
+
part = fg.light_grey part
|
158
|
+
when :trace
|
159
|
+
|
160
|
+
part = bg.blue part
|
161
|
+
part = fg.light_grey part
|
162
|
+
when :benchmark
|
163
|
+
|
164
|
+
part = bg.black part
|
165
|
+
part = fg.light_grey part
|
166
|
+
else
|
167
|
+
|
168
|
+
;
|
169
|
+
end
|
170
|
+
else
|
171
|
+
|
172
|
+
part = fg.dark_grey part
|
173
|
+
end
|
174
|
+
|
175
|
+
part
|
176
|
+
end.join(', ')
|
177
|
+
|
178
|
+
pref = '[' + pref + ']: '
|
179
|
+
|
180
|
+
#pref = pref.map { |pp| pp.severity? ? map_sev_(sev) : sev }.join(
|
181
|
+
end
|
182
|
+
|
183
|
+
stm.puts "#{pref}#{msg}"
|
184
|
+
end
|
185
|
+
|
186
|
+
# Overrideable method that determines which stream to write, based on a
|
187
|
+
# severity. This implementation always returns +$stderr+
|
188
|
+
#
|
189
|
+
# Overrides must return an object that supports the +puts(String)+
|
190
|
+
# method
|
191
|
+
def infer_stream sev
|
192
|
+
|
193
|
+
$stderr
|
194
|
+
end
|
195
|
+
|
196
|
+
private
|
197
|
+
end # class ColouredConsoleLogService
|
198
|
+
|
199
|
+
end # module Services
|
200
|
+
end # module Pantheios
|
201
|
+
|
202
|
+
# ############################## end of file ############################# #
|
203
|
+
|
204
|
+
|
@@ -0,0 +1,92 @@
|
|
1
|
+
|
2
|
+
module Pantheios
|
3
|
+
module Services
|
4
|
+
module Common
|
5
|
+
|
6
|
+
module Console
|
7
|
+
|
8
|
+
module Internal_
|
9
|
+
|
10
|
+
STDERR_ISATTY_ = $stderr.isatty
|
11
|
+
OS_IS_UNIX_ = %w{
|
12
|
+
|
13
|
+
darwin
|
14
|
+
freebsd
|
15
|
+
linux
|
16
|
+
mingw32
|
17
|
+
solaris
|
18
|
+
sunos
|
19
|
+
}.any? { |os| RUBY_PLATFORM =~ /#{os.downcase}/ }
|
20
|
+
SHOULD_COLOURIZE_ = STDERR_ISATTY_ && OS_IS_UNIX_
|
21
|
+
|
22
|
+
module ColourInitialiser
|
23
|
+
|
24
|
+
def self.extended other
|
25
|
+
|
26
|
+
other::COLOURS.each do |name, value|
|
27
|
+
|
28
|
+
other.const_set(name.to_s.upcase, value)
|
29
|
+
|
30
|
+
if SHOULD_COLOURIZE_
|
31
|
+
|
32
|
+
other.define_singleton_method(name) { |s| "\x1B[#{value}m#{s}\x1B[0m" }
|
33
|
+
else
|
34
|
+
|
35
|
+
other.define_singleton_method(name) { |s| s }
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end # module ColourInitialiser
|
40
|
+
end # module Internal_
|
41
|
+
|
42
|
+
module AnsiEscapeSequences
|
43
|
+
|
44
|
+
module Foreground
|
45
|
+
|
46
|
+
COLOURS = {
|
47
|
+
|
48
|
+
blinking: 5,
|
49
|
+
bold: 1,
|
50
|
+
default: 39,
|
51
|
+
|
52
|
+
black: 30,
|
53
|
+
red: 31,
|
54
|
+
green: 32,
|
55
|
+
yellow: 33,
|
56
|
+
blue: 34,
|
57
|
+
magenta: 35,
|
58
|
+
cyan: 36,
|
59
|
+
light_grey: 37,
|
60
|
+
|
61
|
+
dark_grey: 90,
|
62
|
+
bright_red: 91,
|
63
|
+
bright_green: 92,
|
64
|
+
bright_yellow: 93,
|
65
|
+
bright_blue: 94,
|
66
|
+
bright_magenta: 95,
|
67
|
+
bright_cyan: 96,
|
68
|
+
white: 97,
|
69
|
+
}
|
70
|
+
|
71
|
+
extend Internal_::ColourInitialiser
|
72
|
+
end # module Foreground
|
73
|
+
|
74
|
+
module Background
|
75
|
+
|
76
|
+
COLOURS = Hash[Foreground::COLOURS.reject { |k, v| [ :blinking, :bold, :default ].include? k }.map { |k, v| [ k, 10 + v ] }]
|
77
|
+
|
78
|
+
extend Internal_::ColourInitialiser
|
79
|
+
end # module Background
|
80
|
+
|
81
|
+
module Special
|
82
|
+
|
83
|
+
# TODO
|
84
|
+
|
85
|
+
end # module Special
|
86
|
+
end # end AnsiEscapeSequences
|
87
|
+
|
88
|
+
end # module Console
|
89
|
+
end # module Common
|
90
|
+
end # module Services
|
91
|
+
end # module Pantheios
|
92
|
+
|
@@ -6,12 +6,13 @@
|
|
6
6
|
# ::Pantheios::Services::MultiplexingLogService class
|
7
7
|
#
|
8
8
|
# Created: 14th June 2015
|
9
|
-
# Updated:
|
9
|
+
# Updated: 4th June 2020
|
10
10
|
#
|
11
11
|
# Home: http://github.com/synesissoftware/Pantheios-Ruby
|
12
12
|
#
|
13
13
|
# Author: Matthew Wilson
|
14
14
|
#
|
15
|
+
# Copyright (c) 2019-2020, Matthew Wilson and Synesis Information Systems
|
15
16
|
# Copyright (c) 2015-2018, Matthew Wilson and Synesis Software
|
16
17
|
# All rights reserved.
|
17
18
|
#
|
@@ -56,7 +57,7 @@ module Services
|
|
56
57
|
#
|
57
58
|
# NOTE: The *LogService* protocol is implemented by a class that provides
|
58
59
|
# the instance methods +severity_logged?(severity : Object) : boolean+ and
|
59
|
-
# +log(severity : Object, t : Time, prefix : String, msg : String)+
|
60
|
+
# +log(severity : Object, t : Time, prefix : String|Array, msg : String)+
|
60
61
|
class MultiplexingLogService
|
61
62
|
|
62
63
|
module MultiplexingLogService_Internals_
|
@@ -167,6 +168,43 @@ class MultiplexingLogService
|
|
167
168
|
end
|
168
169
|
public
|
169
170
|
|
171
|
+
# Indicates whether any of the services require a prefix and, if so,
|
172
|
+
# what it may require
|
173
|
+
#
|
174
|
+
# === Return
|
175
|
+
# (+false+, +true+, +:parts+) An indicator what the most needy of the
|
176
|
+
# multiplexed services requires
|
177
|
+
def requires_prefix?
|
178
|
+
|
179
|
+
return @requires_prefix unless @requires_prefix.nil?
|
180
|
+
|
181
|
+
requires_prefix = false
|
182
|
+
|
183
|
+
@services.each do |svc|
|
184
|
+
|
185
|
+
if svc.respond_to? :requires_prefix?
|
186
|
+
|
187
|
+
case rp = svc.requires_prefix?
|
188
|
+
when nil, false
|
189
|
+
|
190
|
+
;
|
191
|
+
when true
|
192
|
+
|
193
|
+
requires_prefix ||= true
|
194
|
+
when :parts
|
195
|
+
|
196
|
+
requires_prefix = rp
|
197
|
+
break
|
198
|
+
else
|
199
|
+
|
200
|
+
warn "unrecognised return from requires_prefix? for service #{svc}: #{rp} (#{rp.class})"
|
201
|
+
end
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
205
|
+
@requires_prefix = requires_prefix
|
206
|
+
end
|
207
|
+
|
170
208
|
# Indicates whether the given severity is to be logged by any of the
|
171
209
|
# multiplexed log services
|
172
210
|
def severity_logged? severity
|
@@ -6,12 +6,13 @@
|
|
6
6
|
# class
|
7
7
|
#
|
8
8
|
# Created: 14th June 2015
|
9
|
-
# Updated:
|
9
|
+
# Updated: 4th June 2020
|
10
10
|
#
|
11
11
|
# Home: http://github.com/synesissoftware/Pantheios-Ruby
|
12
12
|
#
|
13
13
|
# Author: Matthew Wilson
|
14
14
|
#
|
15
|
+
# Copyright (c) 2019-2020, Matthew Wilson and Synesis Information Systems
|
15
16
|
# Copyright (c) 2015-2018, Matthew Wilson and Synesis Software
|
16
17
|
# All rights reserved.
|
17
18
|
#
|
@@ -56,7 +57,7 @@ module Services
|
|
56
57
|
#
|
57
58
|
# NOTE: The *LogService* protocol is implemented by a class that provides
|
58
59
|
# the instance methods +severity_logged?(severity : Object) : boolean+ and
|
59
|
-
# +log(severity : Object, t : Time, prefix : String, msg : String)+
|
60
|
+
# +log(severity : Object, t : Time, prefix : String|Array, msg : String)+
|
60
61
|
class NullLogService
|
61
62
|
|
62
63
|
def severity_logged? severity
|
@@ -6,12 +6,13 @@
|
|
6
6
|
# ::Pantheios::Services::SimpleConsoleLogService class
|
7
7
|
#
|
8
8
|
# Created: 14th June 2015
|
9
|
-
# Updated:
|
9
|
+
# Updated: 4th June 2020
|
10
10
|
#
|
11
11
|
# Home: http://github.com/synesissoftware/Pantheios-Ruby
|
12
12
|
#
|
13
13
|
# Author: Matthew Wilson
|
14
14
|
#
|
15
|
+
# Copyright (c) 2019-2020, Matthew Wilson and Synesis Information Systems
|
15
16
|
# Copyright (c) 2015-2018, Matthew Wilson and Synesis Software
|
16
17
|
# All rights reserved.
|
17
18
|
#
|
@@ -56,7 +57,7 @@ module Services
|
|
56
57
|
#
|
57
58
|
# NOTE: The *LogService* protocol is implemented by a class that provides
|
58
59
|
# the instance methods +severity_logged?(severity : Object) : boolean+ and
|
59
|
-
# +log(severity : Object, t : Time, prefix : String, msg : String)+
|
60
|
+
# +log(severity : Object, t : Time, prefix : String|Array, msg : String)+
|
60
61
|
class SimpleConsoleLogService
|
61
62
|
|
62
63
|
def severity_logged? severity
|
@@ -80,7 +81,7 @@ class SimpleConsoleLogService
|
|
80
81
|
|
81
82
|
$stderr
|
82
83
|
end
|
83
|
-
end
|
84
|
+
end # class SimpleConsoleLogService
|
84
85
|
|
85
86
|
end # module Services
|
86
87
|
end # module Pantheios
|
@@ -6,12 +6,13 @@
|
|
6
6
|
# ::Pantheios::Services::SimpleFileLogService class
|
7
7
|
#
|
8
8
|
# Created: 17th June 2015
|
9
|
-
# Updated: 4th
|
9
|
+
# Updated: 4th June 2020
|
10
10
|
#
|
11
11
|
# Home: http://github.com/synesissoftware/Pantheios-Ruby
|
12
12
|
#
|
13
13
|
# Author: Matthew Wilson
|
14
14
|
#
|
15
|
+
# Copyright (c) 2019-2020, Matthew Wilson and Synesis Information Systems
|
15
16
|
# Copyright (c) 2015-2018, Matthew Wilson and Synesis Software
|
16
17
|
# All rights reserved.
|
17
18
|
#
|
@@ -60,7 +61,7 @@ module Services
|
|
60
61
|
#
|
61
62
|
# NOTE: The *LogService* protocol is implemented by a class that provides
|
62
63
|
# the instance methods +severity_logged?(severity : Object) : boolean+ and
|
63
|
-
# +log(severity : Object, t : Time, prefix : String, msg : String)+
|
64
|
+
# +log(severity : Object, t : Time, prefix : String|Array, msg : String)+
|
64
65
|
class SimpleFileLogService
|
65
66
|
|
66
67
|
module SimpleFileLogService_Constants
|
@@ -6,12 +6,13 @@
|
|
6
6
|
# ::Pantheios::Services::StandardLogServiceAdapter class
|
7
7
|
#
|
8
8
|
# Created: 18th June 2015
|
9
|
-
# Updated:
|
9
|
+
# Updated: 4th June 2020
|
10
10
|
#
|
11
11
|
# Home: http://github.com/synesissoftware/Pantheios-Ruby
|
12
12
|
#
|
13
13
|
# Author: Matthew Wilson
|
14
14
|
#
|
15
|
+
# Copyright (c) 2019-2020, Matthew Wilson and Synesis Information Systems
|
15
16
|
# Copyright (c) 2015-2018, Matthew Wilson and Synesis Software
|
16
17
|
# All rights reserved.
|
17
18
|
#
|
@@ -64,7 +65,7 @@ module Services
|
|
64
65
|
#
|
65
66
|
# NOTE: The *LogService* protocol is implemented by a class that provides
|
66
67
|
# the instance methods +severity_logged?(severity : Object) : boolean+ and
|
67
|
-
# +log(severity : Object, t : Time, prefix : String, msg : String)+
|
68
|
+
# +log(severity : Object, t : Time, prefix : String|Array, msg : String)+
|
68
69
|
class StandardLogServiceAdapter
|
69
70
|
|
70
71
|
include ::Xqsr3::Quality::ParameterChecking
|
data/lib/pantheios/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pantheios-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.22.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Wilson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-06-
|
11
|
+
date: 2020-06-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: xqsr3
|
@@ -34,6 +34,7 @@ extra_rdoc_files: []
|
|
34
34
|
files:
|
35
35
|
- LICENSE
|
36
36
|
- README.md
|
37
|
+
- examples/coloured_console_log_service.rb
|
37
38
|
- examples/multiple_modules.md
|
38
39
|
- examples/multiple_modules.rb
|
39
40
|
- examples/simple_logging.md
|
@@ -47,6 +48,8 @@ files:
|
|
47
48
|
- lib/pantheios/front_ends/threshold_front_end.rb
|
48
49
|
- lib/pantheios/globals.rb
|
49
50
|
- lib/pantheios/services.rb
|
51
|
+
- lib/pantheios/services/coloured_console_log_service.rb
|
52
|
+
- lib/pantheios/services/common/console.rb
|
50
53
|
- lib/pantheios/services/multiplexing_log_service.rb
|
51
54
|
- lib/pantheios/services/null_log_service.rb
|
52
55
|
- lib/pantheios/services/simple_console_log_service.rb
|