threadedlogger 1.2.1 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,10 @@
1
1
  # History for ThreadedLogger
2
2
 
3
+ ## v1.30
4
+
5
+ * add a class method initialized? to check if a logging instance for a class
6
+ has been initialized or not
7
+
3
8
  ## v1.2.1
4
9
 
5
10
  * autogenerate gemspec; the manual one had a syntax error
@@ -13,4 +13,5 @@ test/test_methods.rb
13
13
  test/test_threadedlogger.rb
14
14
  test/test_shutdown.rb
15
15
  test/test_clear.rb
16
+ test/test_initialized_flag.rb
16
17
  threadedlogger.gemspec
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 to 'daily'),
61
- the loglevel (defaults to 'info') and an optional formatter proc that will
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'
@@ -27,6 +27,10 @@ class ThreadedLogger
27
27
  }
28
28
  end
29
29
 
30
+ def self.initialized?
31
+ ! @@instances[self].nil?
32
+ end
33
+
30
34
  def self.instance(*args)
31
35
  if @@instances[self].nil?
32
36
  @@instances[self] = new(*args)
@@ -1,5 +1,5 @@
1
1
  class ThreadedLogger
2
2
 
3
- VERSION = '1.2.1'
3
+ VERSION = '1.3.0'
4
4
 
5
5
  end
@@ -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
@@ -1,14 +1,55 @@
1
- $:.push File.expand_path("../lib", __FILE__)
2
- require 'threadedlogger'
1
+ # -*- encoding: utf-8 -*-
3
2
 
4
3
  Gem::Specification.new do |s|
5
- s.name = 'threadedlogger'
6
- s.version = ThreadedLogger::VERSION
7
- s.summary = 'Simple logging library with a dedicated logging thread'
8
- s.homepage = 'https://github.com/jf647/ThreadedLogger'
9
- s.authors = ['James FitzGibbon']
10
- s.email = ['james@nadt.net']
11
- s.files = `git ls-files`.split("\n")
12
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
13
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f)
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.2.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-09-26 00:00:00.000000000 Z
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: '3.7'
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: '3.7'
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