mini_logger 0.4.2 → 0.4.3
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.
- data/lib/mini_logger.rb +23 -14
- data/lib/version.rb +1 -1
- data/test/helpers/tail_file_helper.rb +24 -0
- data/test/unit/test_mini_logger.rb +108 -55
- metadata +25 -7
data/lib/mini_logger.rb
CHANGED
@@ -5,32 +5,39 @@ require 'logger'
|
|
5
5
|
module MiniLogger
|
6
6
|
extend self
|
7
7
|
|
8
|
-
LLM = {
|
9
|
-
:debug =>::Logger::DEBUG,
|
10
|
-
:info =>::Logger::INFO,
|
11
|
-
:warn =>::Logger::WARN,
|
12
|
-
:error =>::Logger::ERROR,
|
13
|
-
:faltal =>::Logger::FATAL
|
14
|
-
}
|
15
|
-
|
16
8
|
DEBUG = :debug
|
17
9
|
INFO = :info
|
18
10
|
WARN = :warn
|
19
11
|
ERROR = :error
|
20
12
|
FATAL = :fatal
|
13
|
+
|
14
|
+
LLM = {
|
15
|
+
:debug =>::Logger::DEBUG,
|
16
|
+
:info =>::Logger::INFO,
|
17
|
+
:warn =>::Logger::WARN,
|
18
|
+
:error =>::Logger::ERROR,
|
19
|
+
:fatal =>::Logger::FATAL
|
20
|
+
}
|
21
|
+
|
22
|
+
RLLM = {
|
23
|
+
::Logger::DEBUG => DEBUG,
|
24
|
+
::Logger::INFO => INFO,
|
25
|
+
::Logger::WARN => WARN,
|
26
|
+
::Logger::ERROR => ERROR,
|
27
|
+
::Logger::FATAL => FATAL
|
28
|
+
}
|
21
29
|
|
22
30
|
DEFAULT_LOG_CHANNEL = STDERR
|
23
31
|
DEFAULT_LOG_LEVEL = DEBUG
|
24
|
-
VALID_METHODS = [ :debug, :info, :warn, :error, :fatal, :debug?, :info?, :warn?, :error? ]
|
32
|
+
VALID_METHODS = [ :debug, :info, :warn, :error, :fatal, :debug?, :info?, :warn?, :error?, :fatal? ]
|
33
|
+
|
25
34
|
|
26
|
-
private
|
27
35
|
def validate_log_level?( log_level )
|
28
36
|
|
29
37
|
LLM.has_key?( log_level )
|
30
38
|
end
|
31
39
|
|
32
|
-
|
33
|
-
public
|
40
|
+
|
34
41
|
def configure( attributes = { } )
|
35
42
|
|
36
43
|
log_channel = attributes[:log_channel] ? attributes[:log_channel] : DEFAULT_LOG_CHANNEL
|
@@ -40,16 +47,18 @@ module MiniLogger
|
|
40
47
|
|
41
48
|
@logger = Logger.new( log_channel )
|
42
49
|
@logger.level = LLM[log_level]
|
43
|
-
|
50
|
+
|
44
51
|
self
|
45
52
|
end
|
46
53
|
|
54
|
+
|
47
55
|
def level( )
|
48
56
|
|
49
57
|
@logger || configure
|
50
58
|
|
51
|
-
@logger.level
|
59
|
+
RLLM[@logger.level]
|
52
60
|
end
|
61
|
+
|
53
62
|
|
54
63
|
def level=( new_log_level )
|
55
64
|
|
data/lib/version.rb
CHANGED
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'file/tail'
|
3
|
+
|
4
|
+
|
5
|
+
class TailFileHelper
|
6
|
+
|
7
|
+
DEFAULT_BACKWARD = 1
|
8
|
+
|
9
|
+
def initialize( log_file_name, backward=DEFAULT_BACKWARD )
|
10
|
+
|
11
|
+
@log_file = File.new( log_file_name )
|
12
|
+
|
13
|
+
@log_file.extend( File::Tail )
|
14
|
+
@log_file.backward( backward )
|
15
|
+
|
16
|
+
# Skilp Logger file header
|
17
|
+
@log_file.tail( 1 )
|
18
|
+
end
|
19
|
+
|
20
|
+
def get_log_line( )
|
21
|
+
|
22
|
+
@log_file.tail( 1 )[0]
|
23
|
+
end
|
24
|
+
end
|
@@ -1,133 +1,186 @@
|
|
1
|
-
$:.unshift( File.join( File.dirname( __FILE__ ), %w[.. lib] ) )
|
2
|
-
|
3
|
-
|
4
1
|
require 'rubygems'
|
5
2
|
require 'shoulda'
|
6
|
-
require 'config_context'
|
7
3
|
require 'file/tail'
|
8
4
|
require 'mini_logger'
|
5
|
+
require File.join( File.dirname( __FILE__ ), %w[.. helpers tail_file_helper.rb] )
|
9
6
|
|
10
7
|
|
11
8
|
class TestMiniLogger < Test::Unit::TestCase
|
12
9
|
|
13
|
-
context "A default logger" do
|
10
|
+
context "A default configured logger" do
|
14
11
|
|
15
12
|
setup do
|
16
|
-
@dl = MiniLogger.configure
|
13
|
+
@dl = MiniLogger.configure
|
17
14
|
end
|
18
15
|
|
19
16
|
should "create a logger in debug level" do
|
20
17
|
assert( @dl.debug? )
|
21
18
|
end
|
19
|
+
|
20
|
+
should "validate diferent log levels" do
|
21
|
+
|
22
|
+
MiniLogger::LLM.keys.each do |log_level|
|
23
|
+
|
24
|
+
assert( @dl.validate_log_level?( log_level ) )
|
25
|
+
end
|
26
|
+
|
27
|
+
[:debug, :info, :warn, :error, :fatal].each do |log_level|
|
28
|
+
|
29
|
+
assert( @dl.validate_log_level?( log_level ) )
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
should "not validate diferent log levels" do
|
34
|
+
|
35
|
+
["foo", "bar", "bazz", :foo, :bar, :bazz].each do |log_level|
|
36
|
+
|
37
|
+
assert( ! @dl.validate_log_level?( log_level ) )
|
38
|
+
end
|
39
|
+
end
|
22
40
|
end
|
23
41
|
|
24
|
-
|
25
42
|
context "A bad configured logger" do
|
26
43
|
|
27
44
|
should "raise and ArgumentError" do
|
28
45
|
|
29
|
-
bad_config_file = File.join( File.dirname( __FILE__ ), %w[.. fixtures bad_test_settings.yml] )
|
30
|
-
|
31
|
-
assert_raises( ArgumentError ) { MiniLogger.configure( ConfigContext.load( bad_config_file ) ) }
|
32
46
|
assert_raises( ArgumentError ) { MiniLogger.configure( :log_level=>"bad_log_level" ) }
|
33
47
|
end
|
34
48
|
end
|
35
49
|
|
36
|
-
|
37
50
|
context "A well configured logger" do
|
38
51
|
|
52
|
+
TEST_DEBUG_MESSAGE = "debug message"
|
53
|
+
TEST_INFO_MESSAGE = "info message"
|
54
|
+
TEST_WARN_MESSAGE = "warn message"
|
55
|
+
TEST_ERROR_MESSAGE = "error message"
|
56
|
+
TEST_FATAL_MESSAGE = "fatal message"
|
57
|
+
|
58
|
+
TEST_LOG_FILE_NAME = '/tmp/mini_logger_test.log'
|
59
|
+
TEST_LOG_LEVEL = 'debug'
|
60
|
+
|
39
61
|
setup do
|
40
62
|
|
41
|
-
|
42
|
-
@
|
43
|
-
|
44
|
-
class MyLogFile < File
|
45
|
-
|
46
|
-
include File::Tail
|
47
|
-
end
|
48
|
-
|
49
|
-
@log_file = MyLogFile.new( ConfigContext.log_channel )
|
50
|
-
@log_file.interval = 10
|
51
|
-
|
52
|
-
@log_file.backward( 1 )
|
53
|
-
@log_file.tail(1) #Skip file header
|
63
|
+
@mld = MiniLogger.configure( :log_channel=>TEST_LOG_FILE_NAME, :log_level=>TEST_LOG_LEVEL )
|
64
|
+
@log_file = TailFileHelper.new( TEST_LOG_FILE_NAME )
|
54
65
|
end
|
55
66
|
|
56
67
|
teardown do
|
57
|
-
|
68
|
+
|
69
|
+
File.delete( TEST_LOG_FILE_NAME ) if File.exist?( TEST_LOG_FILE_NAME )
|
58
70
|
end
|
59
71
|
|
60
72
|
should "write >= debug message" do
|
61
73
|
|
62
|
-
|
63
|
-
assert( @log_file.
|
64
|
-
|
65
|
-
|
66
|
-
assert( @
|
67
|
-
|
68
|
-
|
69
|
-
assert( @log_file.
|
70
|
-
|
71
|
-
|
74
|
+
@mld.debug( TEST_DEBUG_MESSAGE )
|
75
|
+
assert( @log_file.get_log_line =~ /^D\, \[\d{4}\-\d{2}\-\d{2}T\d{2}:\d{2}:\d{2}\.\d{6} #\d{5,6}\] DEBUG \-\- : #{TEST_DEBUG_MESSAGE}/ )
|
76
|
+
|
77
|
+
@mld.info( TEST_INFO_MESSAGE )
|
78
|
+
assert( @log_file.get_log_line =~ /^I\, \[\d{4}\-\d{2}\-\d{2}T\d{2}:\d{2}:\d{2}\.\d{6} #\d{5,6}\] INFO \-\- : #{TEST_INFO_MESSAGE}/ )
|
79
|
+
|
80
|
+
@mld.warn( TEST_WARN_MESSAGE )
|
81
|
+
assert( @log_file.get_log_line =~ /^W\, \[\d{4}\-\d{2}\-\d{2}T\d{2}:\d{2}:\d{2}\.\d{6} #\d{5,6}\] WARN \-\- : #{TEST_WARN_MESSAGE}/ )
|
82
|
+
|
83
|
+
@mld.error( TEST_ERROR_MESSAGE )
|
84
|
+
assert( @log_file.get_log_line =~ /^E\, \[\d{4}\-\d{2}\-\d{2}T\d{2}:\d{2}:\d{2}\.\d{6} #\d{5,6}\] ERROR \-\- : #{TEST_ERROR_MESSAGE}/ )
|
85
|
+
|
86
|
+
@mld.fatal( TEST_FATAL_MESSAGE )
|
87
|
+
assert( @log_file.get_log_line =~ /^F\, \[\d{4}\-\d{2}\-\d{2}T\d{2}:\d{2}:\d{2}\.\d{6} #\d{5,6}\] FATAL \-\- : #{TEST_FATAL_MESSAGE}/ )
|
72
88
|
end
|
73
89
|
|
74
90
|
should "write >= info message" do
|
75
91
|
|
76
|
-
|
77
|
-
assert( @log_file.
|
78
|
-
|
79
|
-
|
80
|
-
assert( @
|
81
|
-
|
82
|
-
|
83
|
-
assert( @log_file.
|
92
|
+
@mld.info( TEST_INFO_MESSAGE )
|
93
|
+
assert( @log_file.get_log_line =~ /^I\, \[\d{4}\-\d{2}\-\d{2}T\d{2}:\d{2}:\d{2}\.\d{6} #\d{5,6}\] INFO \-\- : #{TEST_INFO_MESSAGE}/ )
|
94
|
+
|
95
|
+
@mld.warn( TEST_WARN_MESSAGE )
|
96
|
+
assert( @log_file.get_log_line =~ /^W\, \[\d{4}\-\d{2}\-\d{2}T\d{2}:\d{2}:\d{2}\.\d{6} #\d{5,6}\] WARN \-\- : #{TEST_WARN_MESSAGE}/ )
|
97
|
+
|
98
|
+
@mld.error( TEST_ERROR_MESSAGE )
|
99
|
+
assert( @log_file.get_log_line =~ /^E\, \[\d{4}\-\d{2}\-\d{2}T\d{2}:\d{2}:\d{2}\.\d{6} #\d{5,6}\] ERROR \-\- : #{TEST_ERROR_MESSAGE}/ )
|
100
|
+
|
101
|
+
@mld.fatal( TEST_FATAL_MESSAGE )
|
102
|
+
assert( @log_file.get_log_line =~ /^F\, \[\d{4}\-\d{2}\-\d{2}T\d{2}:\d{2}:\d{2}\.\d{6} #\d{5,6}\] FATAL \-\- : #{TEST_FATAL_MESSAGE}/ )
|
84
103
|
end
|
85
104
|
|
86
105
|
should "write >= warn message" do
|
87
106
|
|
88
|
-
|
89
|
-
assert( @log_file.
|
90
|
-
|
91
|
-
|
92
|
-
assert( @
|
93
|
-
|
107
|
+
@mld.warn( TEST_WARN_MESSAGE )
|
108
|
+
assert( @log_file.get_log_line =~ /^W\, \[\d{4}\-\d{2}\-\d{2}T\d{2}:\d{2}:\d{2}\.\d{6} #\d{5,6}\] WARN \-\- : #{TEST_WARN_MESSAGE}/ )
|
109
|
+
|
110
|
+
@mld.error( TEST_ERROR_MESSAGE )
|
111
|
+
assert( @log_file.get_log_line =~ /^E\, \[\d{4}\-\d{2}\-\d{2}T\d{2}:\d{2}:\d{2}\.\d{6} #\d{5,6}\] ERROR \-\- : #{TEST_ERROR_MESSAGE}/ )
|
112
|
+
|
113
|
+
@mld.fatal( TEST_FATAL_MESSAGE )
|
114
|
+
assert( @log_file.get_log_line =~ /^F\, \[\d{4}\-\d{2}\-\d{2}T\d{2}:\d{2}:\d{2}\.\d{6} #\d{5,6}\] FATAL \-\- : #{TEST_FATAL_MESSAGE}/ )
|
94
115
|
end
|
95
116
|
|
96
117
|
should "write >= error message" do
|
97
118
|
|
98
|
-
|
99
|
-
assert( @log_file.
|
100
|
-
|
101
|
-
|
119
|
+
@mld.error( TEST_ERROR_MESSAGE )
|
120
|
+
assert( @log_file.get_log_line =~ /^E\, \[\d{4}\-\d{2}\-\d{2}T\d{2}:\d{2}:\d{2}\.\d{6} #\d{5,6}\] ERROR \-\- : #{TEST_ERROR_MESSAGE}/ )
|
121
|
+
|
122
|
+
@mld.fatal( TEST_FATAL_MESSAGE )
|
123
|
+
assert( @log_file.get_log_line =~ /^F\, \[\d{4}\-\d{2}\-\d{2}T\d{2}:\d{2}:\d{2}\.\d{6} #\d{5,6}\] FATAL \-\- : #{TEST_FATAL_MESSAGE}/ )
|
102
124
|
end
|
103
125
|
|
104
126
|
should "write a fatal message" do
|
105
127
|
|
106
|
-
|
107
|
-
assert( @log_file.
|
128
|
+
@mld.fatal( TEST_FATAL_MESSAGE )
|
129
|
+
assert( @log_file.get_log_line =~ /^F\, \[\d{4}\-\d{2}\-\d{2}T\d{2}:\d{2}:\d{2}\.\d{6} #\d{5,6}\] FATAL \-\- : #{TEST_FATAL_MESSAGE}/ )
|
108
130
|
end
|
109
131
|
|
132
|
+
|
110
133
|
should "be in DEBUG level" do
|
111
134
|
|
112
135
|
assert( @mld.debug? )
|
136
|
+
assert_equal( @mld.level, MiniLogger::DEBUG )
|
113
137
|
end
|
114
138
|
|
115
139
|
should "change log level to INFO" do
|
116
140
|
|
117
141
|
@mld.level = MiniLogger::INFO
|
142
|
+
|
118
143
|
assert( @mld.info? )
|
144
|
+
assert_equal( @mld.level, MiniLogger::INFO )
|
119
145
|
end
|
120
146
|
|
121
147
|
should "change log level to WARN" do
|
122
148
|
|
123
149
|
@mld.level = MiniLogger::WARN
|
150
|
+
|
124
151
|
assert( @mld.warn? )
|
152
|
+
assert_equal( @mld.level, MiniLogger::WARN )
|
125
153
|
end
|
126
154
|
|
127
155
|
should "change log level to ERROR" do
|
128
156
|
|
129
157
|
@mld.level = MiniLogger::ERROR
|
158
|
+
|
130
159
|
assert( @mld.error? )
|
160
|
+
assert_equal( @mld.level, MiniLogger::ERROR )
|
161
|
+
end
|
162
|
+
|
163
|
+
should "change log level to FATAL" do
|
164
|
+
|
165
|
+
@mld.level = MiniLogger::FATAL
|
166
|
+
|
167
|
+
assert( @mld.fatal? )
|
168
|
+
assert_equal( @mld.level, MiniLogger::FATAL )
|
169
|
+
end
|
170
|
+
|
171
|
+
should "not change to invalid log level" do
|
172
|
+
|
173
|
+
@mld.level = MiniLogger::DEBUG
|
174
|
+
|
175
|
+
assert( @mld.debug? )
|
176
|
+
assert_equal( @mld.level, MiniLogger::DEBUG )
|
177
|
+
|
178
|
+
[:this, :is, :not, :valid, :log, :levels].each do |invalid_log_level|
|
179
|
+
|
180
|
+
assert_raises( ArgumentError ) { @mld.level = invalid_log_level }
|
181
|
+
assert( @mld.debug? )
|
182
|
+
assert_equal( @mld.level, MiniLogger::DEBUG )
|
183
|
+
end
|
131
184
|
end
|
132
185
|
end
|
133
186
|
end
|
metadata
CHANGED
@@ -1,8 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mini_logger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 9
|
4
5
|
prerelease:
|
5
|
-
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 4
|
9
|
+
- 3
|
10
|
+
version: 0.4.3
|
6
11
|
platform: ruby
|
7
12
|
authors:
|
8
13
|
- Javier Juarez
|
@@ -10,20 +15,24 @@ autorequire:
|
|
10
15
|
bindir: bin
|
11
16
|
cert_chain: []
|
12
17
|
|
13
|
-
date: 2011-04-
|
18
|
+
date: 2011-04-28 00:00:00 +02:00
|
19
|
+
default_executable:
|
14
20
|
dependencies:
|
15
21
|
- !ruby/object:Gem::Dependency
|
16
|
-
|
22
|
+
type: :development
|
17
23
|
requirement: &id001 !ruby/object:Gem::Requirement
|
18
24
|
none: false
|
19
25
|
requirements:
|
20
26
|
- - ">="
|
21
27
|
- !ruby/object:Gem::Version
|
28
|
+
hash: 3
|
29
|
+
segments:
|
30
|
+
- 0
|
22
31
|
version: "0"
|
23
|
-
|
24
|
-
prerelease: false
|
32
|
+
name: jeweler
|
25
33
|
version_requirements: *id001
|
26
|
-
|
34
|
+
prerelease: false
|
35
|
+
description: A minimal standard Logger wrapper perfect for CLI applications
|
27
36
|
email: javier.juarez@gmail.com
|
28
37
|
executables: []
|
29
38
|
|
@@ -34,8 +43,10 @@ extra_rdoc_files:
|
|
34
43
|
files:
|
35
44
|
- lib/mini_logger.rb
|
36
45
|
- lib/version.rb
|
46
|
+
- test/helpers/tail_file_helper.rb
|
37
47
|
- test/unit/test_mini_logger.rb
|
38
48
|
- README.rdoc
|
49
|
+
has_rdoc: true
|
39
50
|
homepage: http://github.com/jjuarez/mini_logger
|
40
51
|
licenses:
|
41
52
|
- MIT
|
@@ -49,19 +60,26 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
49
60
|
requirements:
|
50
61
|
- - ">="
|
51
62
|
- !ruby/object:Gem::Version
|
63
|
+
hash: 3
|
64
|
+
segments:
|
65
|
+
- 0
|
52
66
|
version: "0"
|
53
67
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
54
68
|
none: false
|
55
69
|
requirements:
|
56
70
|
- - ">="
|
57
71
|
- !ruby/object:Gem::Version
|
72
|
+
hash: 3
|
73
|
+
segments:
|
74
|
+
- 0
|
58
75
|
version: "0"
|
59
76
|
requirements: []
|
60
77
|
|
61
78
|
rubyforge_project: http://github.com/jjuarez/mini_logger
|
62
|
-
rubygems_version: 1.
|
79
|
+
rubygems_version: 1.6.2
|
63
80
|
signing_key:
|
64
81
|
specification_version: 3
|
65
82
|
summary: A tiny logger utility for small applications
|
66
83
|
test_files:
|
84
|
+
- test/helpers/tail_file_helper.rb
|
67
85
|
- test/unit/test_mini_logger.rb
|