pyer-logger 1.0.2 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|