pyer-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 +4 -4
- data/lib/pyer/logger.rb +53 -49
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 37b2bd3c55935f4e00ad24afb3eefd3cefba458ab76124aec5d48c8d94864f21
|
4
|
+
data.tar.gz: 0dfa99dc327452c4cb2842df8c9bfa2860e331b60d07fcb96e42cbb483aac9be
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 59f2837376f51a162cd49801ab6a2a02db831b663c0017b64f5d8ea3d5c7599c3b01caa99f2393213f5791345f40496c6014127f768d357d47314e8b1581c09d
|
7
|
+
data.tar.gz: 6005918677f4113ea853ae2fc289b08f4260ad62a11540b64616f6c765769bb8ce835567d836f8bfed84282670b8aedaca6298f9f54d9fcbfc0d5bf01947a547
|
data/lib/pyer/logger.rb
CHANGED
@@ -9,6 +9,7 @@
|
|
9
9
|
# 2. INFO : generic (useful) information about system operation
|
10
10
|
# 3. WARN : a warning
|
11
11
|
# 4. ERROR : an error condition
|
12
|
+
# 5. NONE : no log
|
12
13
|
#
|
13
14
|
# So each message has a level, and the Logger itself has a level, which acts
|
14
15
|
# as a filter, so you can control the amount of information emitted from the
|
@@ -16,27 +17,25 @@
|
|
16
17
|
#
|
17
18
|
# == How to create a logger ?
|
18
19
|
#
|
19
|
-
# 1. Create a logger which logs messages to
|
20
|
-
# log = Logger.new
|
21
|
-
# log = Logger.new(STDERR, self.class)
|
20
|
+
# 1. Create a default logger which logs messages to STDOUT
|
21
|
+
# log = Logger.new
|
22
22
|
#
|
23
|
-
# 2. Create a logger
|
24
|
-
# log = Logger.new(
|
23
|
+
# 2. Create a logger which logs messages to STDOUT or STDERR.
|
24
|
+
# log = Logger.new(STDOUT)
|
25
|
+
# log = Logger.new(STDERR)
|
25
26
|
#
|
26
|
-
# 3. Create a logger which
|
27
|
-
# log = Logger.new(
|
27
|
+
# 3. Create a logger for the file which has the specified name.
|
28
|
+
# log = Logger.new('logfile.log')
|
28
29
|
#
|
29
|
-
#
|
30
|
+
# 4. Create a logger which logs messages to a string.
|
31
|
+
# log = Logger.new(STRING)
|
30
32
|
#
|
31
33
|
# == How to log a message ?
|
32
34
|
#
|
33
|
-
# Notice the different methods being used to log messages of various levels.
|
34
|
-
#
|
35
35
|
# Messages lower than log.level are not sent to output.
|
36
|
-
#
|
37
|
-
#
|
38
|
-
#
|
39
|
-
# Default log.level is DEBUG. That means all messages are emitted.
|
36
|
+
# Ranking: DEBUG < INFO < WARN < ERROR < NONE
|
37
|
+
# Default Logger.level is DEBUG. That means all messages are emitted.
|
38
|
+
# Each logger level is initialized with Logger.level and can set a different level.
|
40
39
|
#
|
41
40
|
# 1. Debug message
|
42
41
|
# log.debug "dev info"
|
@@ -65,6 +64,10 @@
|
|
65
64
|
#
|
66
65
|
# log.level = INFO
|
67
66
|
#
|
67
|
+
# == How to set default severity level ?
|
68
|
+
#
|
69
|
+
# Logger.level = NONE
|
70
|
+
#
|
68
71
|
# == How to close a logger ?
|
69
72
|
#
|
70
73
|
# log.close
|
@@ -84,59 +87,59 @@ module Pyer
|
|
84
87
|
INFO = 1
|
85
88
|
WARN = 2
|
86
89
|
ERROR = 3
|
90
|
+
NONE = 4
|
87
91
|
# Severity label for logging. (max 5 char)
|
88
|
-
SEVERITY_LABELS = ['DEBUG', 'INFO ', 'WARN ', 'ERROR']
|
89
|
-
COLOURED_LABELS = ["\033[44mDEBUG\033[m", "\033[42mINFO \033[m", "\033[43mWARN \033[m", "\033[41mERROR\033[m"]
|
92
|
+
SEVERITY_LABELS = ['DEBUG', 'INFO ', 'WARN ', 'ERROR', 'NONE']
|
93
|
+
COLOURED_LABELS = ["\033[44mDEBUG\033[m", "\033[42mINFO \033[m", "\033[43mWARN \033[m", "\033[41mERROR\033[m", ""]
|
90
94
|
end
|
91
95
|
include Severity
|
92
96
|
|
93
97
|
STRING = -1
|
94
98
|
|
95
|
-
|
96
|
-
attr_accessor :level
|
97
|
-
|
98
|
-
# Returns +true+ if the current severity level allows the printing of the message
|
99
|
+
@@default_level = DEBUG
|
99
100
|
|
100
|
-
def
|
101
|
-
|
101
|
+
def self.level=(level)
|
102
|
+
@@default_level = level
|
102
103
|
end
|
103
104
|
|
104
|
-
def
|
105
|
-
|
105
|
+
def self.level
|
106
|
+
@@default_level
|
106
107
|
end
|
107
108
|
|
108
|
-
|
109
|
-
|
110
|
-
end
|
109
|
+
# Logging severity threshold (e.g. <tt>Logger::INFO</tt>).
|
110
|
+
attr_accessor :level
|
111
111
|
|
112
|
-
|
113
|
-
|
114
|
-
end
|
112
|
+
# Prefix can be the class name
|
113
|
+
attr_accessor :prefix
|
115
114
|
|
116
115
|
# Create an instance.
|
117
116
|
# outputs log messages on STDOUT, STDERR, a file or a StringIO
|
118
117
|
#
|
119
|
-
def initialize(logdev =
|
120
|
-
@level =
|
118
|
+
def initialize(logdev = STDOUT)
|
119
|
+
@level = @@default_level
|
120
|
+
@prefix = ""
|
121
121
|
@logdev = $stdout
|
122
122
|
@severity_label = COLOURED_LABELS
|
123
|
-
|
124
|
-
|
125
|
-
return if logdev.nil?
|
126
|
-
if logdev == STRING
|
127
|
-
# no log device implies that messages are stored in a string
|
128
|
-
@logdev = StringIO.new
|
129
|
-
@severity_label = SEVERITY_LABELS
|
123
|
+
if logdev == STDOUT
|
124
|
+
@logdev = $stdout
|
130
125
|
else
|
131
|
-
if logdev ==
|
132
|
-
@logdev = $
|
126
|
+
if logdev == STDERR
|
127
|
+
@logdev = $stderr
|
133
128
|
else
|
134
|
-
if logdev ==
|
135
|
-
|
136
|
-
|
137
|
-
# the default log device is a file name
|
138
|
-
@logdev = File.new(logdev.to_s, 'a')
|
129
|
+
if logdev == STRING
|
130
|
+
# no log device implies that messages are stored in a string
|
131
|
+
@logdev = StringIO.new
|
139
132
|
@severity_label = SEVERITY_LABELS
|
133
|
+
else
|
134
|
+
if logdev.is_a? String
|
135
|
+
# the log device is a file name
|
136
|
+
@logdev = File.new(logdev.to_s, 'a')
|
137
|
+
@severity_label = SEVERITY_LABELS
|
138
|
+
else
|
139
|
+
# the default is no log
|
140
|
+
@level = NONE
|
141
|
+
@logdev = $stderr
|
142
|
+
end
|
140
143
|
end
|
141
144
|
end
|
142
145
|
end
|
@@ -179,15 +182,15 @@ module Pyer
|
|
179
182
|
return if @logdev.nil? || severity < @level
|
180
183
|
message = '' if message.nil?
|
181
184
|
message += block.call if block_given?
|
182
|
-
@logdev.write(Formatter.new.string(@
|
185
|
+
@logdev.write(Formatter.new.string(@prefix, @severity_label[severity], message))
|
183
186
|
end
|
184
187
|
end
|
185
188
|
|
186
189
|
# Formatter class
|
187
190
|
class Formatter
|
188
191
|
FORMAT = "%s [%5d] %12s %s %s\n"
|
189
|
-
def string(
|
190
|
-
format(FORMAT, format_datetime(Time.now), $$,
|
192
|
+
def string(prefix, label, message = nil)
|
193
|
+
format(FORMAT, format_datetime(Time.now), $$, prefix, label, format_message(message))
|
191
194
|
end
|
192
195
|
|
193
196
|
private
|
@@ -222,3 +225,4 @@ DEBUG = Pyer::Logger::DEBUG
|
|
222
225
|
INFO = Pyer::Logger::INFO
|
223
226
|
WARN = Pyer::Logger::WARN
|
224
227
|
ERROR = Pyer::Logger::ERROR
|
228
|
+
NONE = Pyer::Logger::NONE
|