pyer-logger 1.0.2 → 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 +5 -5
- data/lib/pyer/logger.rb +80 -73
- metadata +20 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
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
@@ -2,77 +2,80 @@
|
|
2
2
|
#
|
3
3
|
# This Logger class provides a simple logging utility for Ruby applications.
|
4
4
|
# Log messages are sent to stdout, stderr, a file or a string by a Logger object.
|
5
|
-
#
|
5
|
+
#
|
6
6
|
# The messages will have varying levels reflecting their varying importance.
|
7
7
|
# The levels, and their meanings, are:
|
8
8
|
# 1. DEBUG : low-level information for developers
|
9
9
|
# 2. INFO : generic (useful) information about system operation
|
10
10
|
# 3. WARN : a warning
|
11
11
|
# 4. ERROR : an error condition
|
12
|
-
#
|
12
|
+
# 5. NONE : no log
|
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
|
15
16
|
# logger without having to remove actual messages.
|
16
|
-
#
|
17
|
+
#
|
17
18
|
# == How to create a logger ?
|
18
|
-
#
|
19
|
-
# 1. Create a logger which logs messages to
|
20
|
-
# log = Logger.new
|
21
|
-
#
|
22
|
-
#
|
23
|
-
#
|
24
|
-
# log = Logger.new(
|
25
|
-
#
|
26
|
-
# 3. Create a logger which
|
27
|
-
# log = Logger.new(
|
28
|
-
#
|
29
|
-
#
|
30
|
-
#
|
19
|
+
#
|
20
|
+
# 1. Create a default logger which logs messages to STDOUT
|
21
|
+
# log = Logger.new
|
22
|
+
#
|
23
|
+
# 2. Create a logger which logs messages to STDOUT or STDERR.
|
24
|
+
# log = Logger.new(STDOUT)
|
25
|
+
# log = Logger.new(STDERR)
|
26
|
+
#
|
27
|
+
# 3. Create a logger for the file which has the specified name.
|
28
|
+
# log = Logger.new('logfile.log')
|
29
|
+
#
|
30
|
+
# 4. Create a logger which logs messages to a string.
|
31
|
+
# log = Logger.new(STRING)
|
32
|
+
#
|
31
33
|
# == How to log a message ?
|
32
|
-
#
|
33
|
-
# Notice the different methods being used to log messages of various levels.
|
34
34
|
#
|
35
35
|
# Messages lower than log.level are not sent to output.
|
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.
|
36
39
|
#
|
37
|
-
# Ranking: DEBUG < INFO < WARN < ERROR
|
38
|
-
#
|
39
|
-
# Default log.level is DEBUG. That means all messages are emitted.
|
40
|
-
#
|
41
40
|
# 1. Debug message
|
42
41
|
# log.debug "dev info"
|
43
|
-
#
|
42
|
+
#
|
44
43
|
# 2. Information
|
45
44
|
# log.info "some informations"
|
46
|
-
#
|
45
|
+
#
|
47
46
|
# 3. Warning message
|
48
47
|
# log.warn "a warning message"
|
49
|
-
#
|
48
|
+
#
|
50
49
|
# 4. Error message
|
51
50
|
# log.error "error is #{ @code }"
|
52
|
-
#
|
51
|
+
#
|
53
52
|
# Messages are provided in a string or in a block, or both.
|
54
|
-
#
|
53
|
+
#
|
55
54
|
# 1. Message in block.
|
56
55
|
# log.error { "Argument 'foo' not given." }
|
57
|
-
#
|
56
|
+
#
|
58
57
|
# 2. Message as a string.
|
59
58
|
# log.error "Argument #{ @foo } mismatch."
|
60
|
-
#
|
59
|
+
#
|
61
60
|
# 3. Both arguments
|
62
|
-
# log.error("Argument ") { "#{ @foo } mismatch." }
|
63
|
-
#
|
61
|
+
# log.error("Argument ") { "#{ @foo } mismatch." }
|
62
|
+
#
|
64
63
|
# == How to set severity level ?
|
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
|
71
|
-
#
|
74
|
+
#
|
72
75
|
# == Installation
|
73
|
-
#
|
74
|
-
# gem install pyer-
|
75
|
-
#
|
76
|
+
#
|
77
|
+
# gem install pyer-logger
|
78
|
+
#
|
76
79
|
module Pyer
|
77
80
|
require 'stringio'
|
78
81
|
|
@@ -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
|
@@ -211,7 +214,10 @@ module Pyer
|
|
211
214
|
end
|
212
215
|
end
|
213
216
|
|
214
|
-
#
|
217
|
+
# == Aliases
|
218
|
+
#
|
219
|
+
# Aliases are made to make life simpler.
|
220
|
+
#
|
215
221
|
Logger = Pyer::Logger
|
216
222
|
STRING = Pyer::Logger::STRING
|
217
223
|
|
@@ -219,3 +225,4 @@ DEBUG = Pyer::Logger::DEBUG
|
|
219
225
|
INFO = Pyer::Logger::INFO
|
220
226
|
WARN = Pyer::Logger::WARN
|
221
227
|
ERROR = Pyer::Logger::ERROR
|
228
|
+
NONE = Pyer::Logger::NONE
|
metadata
CHANGED
@@ -1,29 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pyer-logger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pierre BAZONNARD
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date:
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: stringio
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3.0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '3.0'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: rake
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
16
30
|
requirements:
|
17
31
|
- - "~>"
|
18
32
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
33
|
+
version: '12.3'
|
20
34
|
type: :development
|
21
35
|
prerelease: false
|
22
36
|
version_requirements: !ruby/object:Gem::Requirement
|
23
37
|
requirements:
|
24
38
|
- - "~>"
|
25
39
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
40
|
+
version: '12.3'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: minitest
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -46,7 +60,7 @@ extensions: []
|
|
46
60
|
extra_rdoc_files: []
|
47
61
|
files:
|
48
62
|
- lib/pyer/logger.rb
|
49
|
-
homepage: https://github.com/pyer/logger
|
63
|
+
homepage: https://github.com/pyer/pyer-logger
|
50
64
|
licenses:
|
51
65
|
- MIT
|
52
66
|
metadata: {}
|
@@ -65,8 +79,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
65
79
|
- !ruby/object:Gem::Version
|
66
80
|
version: '0'
|
67
81
|
requirements: []
|
68
|
-
|
69
|
-
rubygems_version: 2.4.5
|
82
|
+
rubygems_version: 3.1.2
|
70
83
|
signing_key:
|
71
84
|
specification_version: 4
|
72
85
|
summary: Logger
|