threadedlogger 1.2.1 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +5 -0
- data/Manifest.txt +1 -0
- data/README.txt +14 -3
- data/Rakefile +12 -0
- data/lib/threadedlogger/core.rb +4 -0
- data/lib/threadedlogger/version.rb +1 -1
- data/test/test_initialized_flag.rb +62 -0
- data/threadedlogger.gemspec +52 -11
- metadata +111 -7
data/History.txt
CHANGED
data/Manifest.txt
CHANGED
data/README.txt
CHANGED
@@ -57,9 +57,13 @@ Under the covers, the dedicated thread uses the standard Ruby Logger
|
|
57
57
|
library. Refer to [Logger](http://www.ruby-doc.org/stdlib-1.9.3/libdoc/logger/rdoc/Logger.html)
|
58
58
|
for further detail.
|
59
59
|
|
60
|
-
The arguments are: the filename, the rotation period (defaults
|
61
|
-
the loglevel (defaults to 'info') and an optional formatter
|
62
|
-
be used instead of the one that comes with Logger.
|
60
|
+
The constructor arguments are: the filename, the rotation period (defaults
|
61
|
+
to 'daily'), the loglevel (defaults to 'info') and an optional formatter
|
62
|
+
proc that will be used instead of the one that comes with Logger.
|
63
|
+
|
64
|
+
The logging instance should be invoked with arguments only once. Subsequent
|
65
|
+
uses of the instance accessor should pass no args. Attempting to call the
|
66
|
+
instance method twice with arguments will raise an ArgumentError.
|
63
67
|
|
64
68
|
When you invoke one of the logging methods, the text is enqueued. The
|
65
69
|
background thread constantly pops messages off this queue and logs them. To
|
@@ -68,6 +72,13 @@ instance method before your program exits. On a clean shutdown this should
|
|
68
72
|
happen automatically, but if you exit in a funky way it might not capture
|
69
73
|
the last message.
|
70
74
|
|
75
|
+
You can tell if the logging instance for a class has been initialized by
|
76
|
+
calling the class method initialized?
|
77
|
+
|
78
|
+
ThreadedLogger.initialized? # false
|
79
|
+
logger = ThreadedLogger.instance('test/foo.log', 'daily', 'info')
|
80
|
+
ThreadedLogger.initialized? # true
|
81
|
+
|
71
82
|
The catalog of instances can be cleared using the ::clear and ::clear_all
|
72
83
|
class methods. Each takes an optional boolean argument indicating whether
|
73
84
|
::shutdown should be called on any active loggers before clearing them.
|
data/Rakefile
CHANGED
@@ -1,13 +1,25 @@
|
|
1
1
|
require 'rake/testtask'
|
2
2
|
require 'hoe'
|
3
3
|
|
4
|
+
Hoe.plugin :gemspec
|
5
|
+
Hoe.plugin :bundler
|
6
|
+
|
4
7
|
Hoe.spec 'threadedlogger' do
|
5
8
|
developer("James FitzGibbon", "james@nadt.net")
|
6
9
|
license "MIT"
|
10
|
+
dependency 'hoe', '~> 3.7.1', :dev
|
11
|
+
dependency 'hoe-gemspec', '~> 1.0.0', :dev
|
12
|
+
dependency 'hoe-bundler', '~> 1.2.0', :dev
|
13
|
+
dependency 'simplecov', '~> 0.7.1', :dev
|
14
|
+
dependency 'simplecov-console', '~> 0.1.1', :dev
|
15
|
+
dependency 'minitest', '~> 5.0.8', :dev
|
16
|
+
dependency 'minitest-debugger', '~> 1.0.2', :dev
|
7
17
|
end
|
8
18
|
|
9
19
|
task :default => [:unit_tests]
|
10
20
|
|
21
|
+
task :package => [ 'gem:spec', 'bundler:gemfile' ]
|
22
|
+
|
11
23
|
desc "Run basic tests"
|
12
24
|
Rake::TestTask.new("unit_tests") { |t|
|
13
25
|
t.libs.push 'lib'
|
data/lib/threadedlogger/core.rb
CHANGED
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'minitest_helper'
|
2
|
+
|
3
|
+
class OurLog1 < ThreadedLogger
|
4
|
+
end
|
5
|
+
|
6
|
+
class OurLog2 < ThreadedLogger
|
7
|
+
end
|
8
|
+
|
9
|
+
class TestInitializedFlag < ThreadedLoggerTest
|
10
|
+
def test_initialized_base
|
11
|
+
assert_equal false, ThreadedLogger.initialized?, 'instance is not initialized'
|
12
|
+
logger = ThreadedLogger.instance('test/foo.log', 'daily', 'info')
|
13
|
+
assert_instance_of ThreadedLogger, logger, "construct ThreadedLogger"
|
14
|
+
assert_equal true, ThreadedLogger.initialized?, 'instance is initialized'
|
15
|
+
end
|
16
|
+
def test_initialized_subclass
|
17
|
+
assert_equal false, ThreadedLogger.initialized?, 'ThreadedLogger is not initialized'
|
18
|
+
assert_equal false, OurLog1.initialized?, 'OurLog1 is not initialized'
|
19
|
+
assert_equal false, OurLog2.initialized?, 'OurLog2 is not initialized'
|
20
|
+
logger = ThreadedLogger.instance('test/foo.log', 'daily', 'info')
|
21
|
+
assert_instance_of ThreadedLogger, logger, "construct ThreadedLogger"
|
22
|
+
assert_equal true, ThreadedLogger.initialized?, 'ThreadedLogger is initialized'
|
23
|
+
assert_equal false, OurLog1.initialized?, 'OurLog1 is not initialized'
|
24
|
+
assert_equal false, OurLog2.initialized?, 'OurLog2 is not initialized'
|
25
|
+
ourlog1 = OurLog1.instance('test/bar.log', 'daily', 'info')
|
26
|
+
assert_instance_of OurLog1, ourlog1, "construct OurLog1"
|
27
|
+
assert_equal true, ThreadedLogger.initialized?, 'ThreadedLogger is initialized'
|
28
|
+
assert_equal true, OurLog1.initialized?, 'OurLog1 is initialized'
|
29
|
+
assert_equal false, OurLog2.initialized?, 'OurLog2 is not initialized'
|
30
|
+
ourlog2 = OurLog2.instance('test/baz.log', 'daily', 'info')
|
31
|
+
assert_instance_of OurLog2, ourlog2, "construct OurLog2"
|
32
|
+
assert_equal true, ThreadedLogger.initialized?, 'ThreadedLogger is initialized'
|
33
|
+
assert_equal true, OurLog1.initialized?, 'OurLog1 is initialized'
|
34
|
+
assert_equal true, OurLog2.initialized?, 'OurLog2 is initialized'
|
35
|
+
end
|
36
|
+
def test_initialized_clear
|
37
|
+
assert_equal false, ThreadedLogger.initialized?, 'instance is not initialized'
|
38
|
+
logger = ThreadedLogger.instance('test/foo.log', 'daily', 'info')
|
39
|
+
assert_instance_of ThreadedLogger, logger, "construct ThreadedLogger"
|
40
|
+
assert_equal true, ThreadedLogger.initialized?, 'instance is initialized'
|
41
|
+
ThreadedLogger.clear
|
42
|
+
assert_equal false, ThreadedLogger.initialized?, 'instance is not initialized after clear'
|
43
|
+
end
|
44
|
+
def test_initialized_clear_all
|
45
|
+
assert_equal false, ThreadedLogger.initialized?, 'ThreadedLogger is not initialized'
|
46
|
+
assert_equal false, OurLog1.initialized?, 'OurLog1 is not initialized'
|
47
|
+
assert_equal false, OurLog2.initialized?, 'OurLog2 is not initialized'
|
48
|
+
logger = ThreadedLogger.instance('test/foo.log', 'daily', 'info')
|
49
|
+
assert_instance_of ThreadedLogger, logger, "construct ThreadedLogger"
|
50
|
+
ourlog1 = OurLog1.instance('test/bar.log', 'daily', 'info')
|
51
|
+
assert_instance_of OurLog1, ourlog1, "construct OurLog1"
|
52
|
+
ourlog2 = OurLog2.instance('test/baz.log', 'daily', 'info')
|
53
|
+
assert_instance_of OurLog2, ourlog2, "construct OurLog2"
|
54
|
+
assert_equal true, ThreadedLogger.initialized?, 'ThreadedLogger is initialized'
|
55
|
+
assert_equal true, OurLog1.initialized?, 'OurLog1 is initialized'
|
56
|
+
assert_equal true, OurLog2.initialized?, 'OurLog2 is initialized'
|
57
|
+
ThreadedLogger.clear_all
|
58
|
+
assert_equal false, ThreadedLogger.initialized?, 'ThreadedLogger is not initialized after clear_all'
|
59
|
+
assert_equal false, OurLog1.initialized?, 'OurLog1 is not initialized after clear_all'
|
60
|
+
assert_equal false, OurLog2.initialized?, 'OurLog2 is not initialized after clear_all'
|
61
|
+
end
|
62
|
+
end
|
data/threadedlogger.gemspec
CHANGED
@@ -1,14 +1,55 @@
|
|
1
|
-
|
2
|
-
require 'threadedlogger'
|
1
|
+
# -*- encoding: utf-8 -*-
|
3
2
|
|
4
3
|
Gem::Specification.new do |s|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
4
|
+
s.name = "threadedlogger"
|
5
|
+
s.version = "1.3.0.20131002091417"
|
6
|
+
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
|
+
s.authors = ["James FitzGibbon"]
|
9
|
+
s.date = "2013-10-02"
|
10
|
+
s.description = "ThreadedLogger runs a dedicated logging thread around Ruby's Logger library\nto ensure that multiple threads don't step on each other's toes."
|
11
|
+
s.email = ["james@nadt.net"]
|
12
|
+
s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.txt", "LICENSE.txt"]
|
13
|
+
s.files = ["History.txt", "Manifest.txt", "README.txt", "LICENSE.txt", "Rakefile", "lib/threadedlogger.rb", "lib/threadedlogger/core.rb", "lib/threadedlogger/version.rb", "lib/threadedlogger/logger.rb", "test/minitest_helper.rb", "test/test_logging.rb", "test/test_methods.rb", "test/test_threadedlogger.rb", "test/test_shutdown.rb", "test/test_clear.rb", "test/test_initialized_flag.rb", "threadedlogger.gemspec", "test/test_inheritable.rb", ".gemtest"]
|
14
|
+
s.homepage = "https://github.com/jf647/ThreadedLogger"
|
15
|
+
s.licenses = ["MIT"]
|
16
|
+
s.rdoc_options = ["--main", "README.txt"]
|
17
|
+
s.require_paths = ["lib"]
|
18
|
+
s.rubyforge_project = "threadedlogger"
|
19
|
+
s.rubygems_version = "1.8.23"
|
20
|
+
s.summary = "ThreadedLogger runs a dedicated logging thread around Ruby's Logger library to ensure that multiple threads don't step on each other's toes."
|
21
|
+
s.test_files = ["test/test_initialized_flag.rb", "test/test_methods.rb", "test/test_clear.rb", "test/test_inheritable.rb", "test/test_logging.rb", "test/test_shutdown.rb", "test/test_threadedlogger.rb"]
|
22
|
+
|
23
|
+
if s.respond_to? :specification_version then
|
24
|
+
s.specification_version = 3
|
25
|
+
|
26
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
27
|
+
s.add_development_dependency(%q<rdoc>, ["~> 4.0"])
|
28
|
+
s.add_development_dependency(%q<hoe>, ["~> 3.7.1"])
|
29
|
+
s.add_development_dependency(%q<hoe-gemspec>, ["~> 1.0.0"])
|
30
|
+
s.add_development_dependency(%q<hoe-bundler>, ["~> 1.2.0"])
|
31
|
+
s.add_development_dependency(%q<simplecov>, ["~> 0.7.1"])
|
32
|
+
s.add_development_dependency(%q<simplecov-console>, ["~> 0.1.1"])
|
33
|
+
s.add_development_dependency(%q<minitest>, ["~> 5.0.8"])
|
34
|
+
s.add_development_dependency(%q<minitest-debugger>, ["~> 1.0.2"])
|
35
|
+
else
|
36
|
+
s.add_dependency(%q<rdoc>, ["~> 4.0"])
|
37
|
+
s.add_dependency(%q<hoe>, ["~> 3.7.1"])
|
38
|
+
s.add_dependency(%q<hoe-gemspec>, ["~> 1.0.0"])
|
39
|
+
s.add_dependency(%q<hoe-bundler>, ["~> 1.2.0"])
|
40
|
+
s.add_dependency(%q<simplecov>, ["~> 0.7.1"])
|
41
|
+
s.add_dependency(%q<simplecov-console>, ["~> 0.1.1"])
|
42
|
+
s.add_dependency(%q<minitest>, ["~> 5.0.8"])
|
43
|
+
s.add_dependency(%q<minitest-debugger>, ["~> 1.0.2"])
|
44
|
+
end
|
45
|
+
else
|
46
|
+
s.add_dependency(%q<rdoc>, ["~> 4.0"])
|
47
|
+
s.add_dependency(%q<hoe>, ["~> 3.7.1"])
|
48
|
+
s.add_dependency(%q<hoe-gemspec>, ["~> 1.0.0"])
|
49
|
+
s.add_dependency(%q<hoe-bundler>, ["~> 1.2.0"])
|
50
|
+
s.add_dependency(%q<simplecov>, ["~> 0.7.1"])
|
51
|
+
s.add_dependency(%q<simplecov-console>, ["~> 0.1.1"])
|
52
|
+
s.add_dependency(%q<minitest>, ["~> 5.0.8"])
|
53
|
+
s.add_dependency(%q<minitest-debugger>, ["~> 1.0.2"])
|
54
|
+
end
|
14
55
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: threadedlogger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-10-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rdoc
|
@@ -34,7 +34,7 @@ dependencies:
|
|
34
34
|
requirements:
|
35
35
|
- - ~>
|
36
36
|
- !ruby/object:Gem::Version
|
37
|
-
version:
|
37
|
+
version: 3.7.1
|
38
38
|
type: :development
|
39
39
|
prerelease: false
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -42,7 +42,103 @@ dependencies:
|
|
42
42
|
requirements:
|
43
43
|
- - ~>
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
version:
|
45
|
+
version: 3.7.1
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: hoe-gemspec
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 1.0.0
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.0.0
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: hoe-bundler
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 1.2.0
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 1.2.0
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: simplecov
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ~>
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 0.7.1
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ~>
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 0.7.1
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: simplecov-console
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ~>
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: 0.1.1
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ~>
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 0.1.1
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: minitest
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ~>
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 5.0.8
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ~>
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: 5.0.8
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: minitest-debugger
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
130
|
+
requirements:
|
131
|
+
- - ~>
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: 1.0.2
|
134
|
+
type: :development
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ~>
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: 1.0.2
|
46
142
|
description: ! 'ThreadedLogger runs a dedicated logging thread around Ruby''s Logger
|
47
143
|
library
|
48
144
|
|
@@ -72,6 +168,7 @@ files:
|
|
72
168
|
- test/test_threadedlogger.rb
|
73
169
|
- test/test_shutdown.rb
|
74
170
|
- test/test_clear.rb
|
171
|
+
- test/test_initialized_flag.rb
|
75
172
|
- threadedlogger.gemspec
|
76
173
|
- test/test_inheritable.rb
|
77
174
|
- .gemtest
|
@@ -90,12 +187,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
90
187
|
- - ! '>='
|
91
188
|
- !ruby/object:Gem::Version
|
92
189
|
version: '0'
|
190
|
+
segments:
|
191
|
+
- 0
|
192
|
+
hash: -1214133197153868544
|
93
193
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
94
194
|
none: false
|
95
195
|
requirements:
|
96
196
|
- - ! '>='
|
97
197
|
- !ruby/object:Gem::Version
|
98
198
|
version: '0'
|
199
|
+
segments:
|
200
|
+
- 0
|
201
|
+
hash: -1214133197153868544
|
99
202
|
requirements: []
|
100
203
|
rubyforge_project: threadedlogger
|
101
204
|
rubygems_version: 1.8.23
|
@@ -104,9 +207,10 @@ specification_version: 3
|
|
104
207
|
summary: ThreadedLogger runs a dedicated logging thread around Ruby's Logger library
|
105
208
|
to ensure that multiple threads don't step on each other's toes.
|
106
209
|
test_files:
|
210
|
+
- test/test_initialized_flag.rb
|
211
|
+
- test/test_methods.rb
|
212
|
+
- test/test_clear.rb
|
213
|
+
- test/test_inheritable.rb
|
107
214
|
- test/test_logging.rb
|
108
215
|
- test/test_shutdown.rb
|
109
|
-
- test/test_inheritable.rb
|
110
|
-
- test/test_clear.rb
|
111
|
-
- test/test_methods.rb
|
112
216
|
- test/test_threadedlogger.rb
|