yell 0.12.1 → 0.13.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.
data/lib/yell.rb CHANGED
@@ -12,7 +12,7 @@
12
12
  #
13
13
  # The above copyright notice and this permission notice shall be
14
14
  # included in all copies or substantial portions of the Software.
15
- #
15
+
16
16
  # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
17
  # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
18
  # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -22,6 +22,8 @@
22
22
  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
23
 
24
24
  module Yell #:nodoc:
25
+
26
+ # Holds all Yell severities
25
27
  Severities = [ 'DEBUG', 'INFO', 'WARN', 'ERROR', 'FATAL', 'UNKNOWN' ]
26
28
 
27
29
  class << self
@@ -36,11 +38,25 @@ module Yell #:nodoc:
36
38
 
37
39
  # Shortcut to Yell::Level.new
38
40
  #
39
- # @return [Yell::Level] A Yell::Level instance
41
+ # @return [Yell::Level] The level instance
40
42
  def level( val = nil )
41
43
  Yell::Level.new( val )
42
44
  end
43
45
 
46
+ # Shortcut to Yell::Repository[]
47
+ #
48
+ # @return [Yell::Logger] The logger instance
49
+ def []( name )
50
+ Yell::Repository[ name ]
51
+ end
52
+
53
+ # Shortcut to Yell::Repository[]=
54
+ #
55
+ # @return [Yell::Logger] The logger instance
56
+ def []=( name, logger )
57
+ Yell::Repository[ name ] = logger
58
+ end
59
+
44
60
  # Shortcut to Yell::Fomatter.new
45
61
  #
46
62
  # @return [Yell::Formatter] A Yell::Formatter instance
@@ -48,28 +64,32 @@ module Yell #:nodoc:
48
64
  Yell::Formatter.new( pattern, date_pattern )
49
65
  end
50
66
 
51
- def env #:nodoc:
52
- ENV['YELL_ENV'] || ENV['RACK_ENV'] ||ENV['RAILS_ENV'] || 'development'
53
- end
54
-
67
+ # Loads a config from a YAML file
55
68
  def load!( file )
56
69
  Yell.new Yell::Configuration.load!( file )
57
70
  end
58
71
 
59
- def _deprecate( version, message, options = {} )
60
- warning = ["Deprecation Warning (since v#{version}): #{message}" ]
61
- warning << " before: #{options[:before]}" if options[:before]
62
- warning << " after: #{options[:after]}" if options[:after]
72
+ def env #:nodoc:
73
+ ENV['YELL_ENV'] || ENV['RACK_ENV'] ||ENV['RAILS_ENV'] || 'development'
74
+ end
75
+
76
+ def _deprecate( version, message, options = {} ) #:nodoc:
77
+ messages = ["Deprecation Warning (since v#{version}): #{message}" ]
78
+ messages << " before: #{options[:before]}" if options[:before]
79
+ messages << " after: #{options[:after]}" if options[:after]
63
80
 
64
- $stderr.puts warning.join( "\n" )
81
+ _warn( *messages )
65
82
  end
66
83
 
84
+ def _warn( *messages )
85
+ $stderr.puts messages.join( "\n" )
86
+ end
67
87
  end
68
88
 
69
89
  end
70
90
 
71
91
  require File.dirname(__FILE__) + '/yell/configuration'
72
-
92
+ require File.dirname(__FILE__) + '/yell/repository'
73
93
  require File.dirname(__FILE__) + '/yell/event'
74
94
  require File.dirname(__FILE__) + '/yell/level'
75
95
  require File.dirname(__FILE__) + '/yell/formatter'
data/lib/yell/logger.rb CHANGED
@@ -77,7 +77,7 @@ module Yell #:nodoc:
77
77
  #
78
78
  # @param [Symbol] type The type of the adapter, may be `:file` or `:datefile` (default `:file`)
79
79
  #
80
- # @return A new +Yell::Adapter+ instance
80
+ # @return [Yell::Adapter] The instance
81
81
  #
82
82
  # @raise [Yell::NoSuchAdapter] Will be thrown when the adapter is not defined
83
83
  def adapter( type = :file, *args, &block )
@@ -0,0 +1,44 @@
1
+ # encoding: utf-8
2
+
3
+ require 'monitor'
4
+ require "singleton"
5
+
6
+ module Yell #:nodoc:
7
+ class Repository
8
+ extend MonitorMixin
9
+ include Singleton
10
+
11
+ attr_accessor :loggers
12
+
13
+ def initialize
14
+ @loggers = {}
15
+ end
16
+
17
+ # Set loggers in the repository
18
+ #
19
+ # @example Set a logger
20
+ # Yell::Repository[ 'development' ] = Yell::Logger.new :stdout
21
+ #
22
+ # @return [Yell::Logger] The logger instance
23
+ def self.[]=( name, logger )
24
+ synchronize { instance.loggers[name] = logger }
25
+ end
26
+
27
+ # Get loggers from the repository
28
+ #
29
+ # @example Get the logger
30
+ # Yell::Repository[ 'development' ]
31
+ #
32
+ # @return [Yell::Logger] The logger instance
33
+ def self.[]( name )
34
+ synchronize { instance.loggers[name] }
35
+ end
36
+
37
+ # Clears all logger instances (handy for testing)
38
+ def self.clear
39
+ synchronize { instance.loggers.clear }
40
+ end
41
+
42
+ end
43
+ end
44
+
data/lib/yell/version.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module Yell #:nodoc:
4
- VERSION = "0.12.1"
4
+ VERSION = "0.13.0"
5
5
 
6
6
  end
7
7
 
data/spec/spec_helper.rb CHANGED
@@ -12,6 +12,10 @@ require 'timecop'
12
12
  RSpec.configure do |config|
13
13
  config.mock_framework = :rr
14
14
 
15
+ config.before do
16
+ Yell::Repository.clear
17
+ end
18
+
15
19
  config.after do
16
20
  Dir[ fixture_path + "/*.log" ].each { |f| File.delete f }
17
21
  end
@@ -0,0 +1,41 @@
1
+ require 'spec_helper'
2
+
3
+ describe "running Yell multi-threaded" do
4
+ let( :threads ) { 100 }
5
+
6
+ let( :filename ) { fixture_path + '/threaded.log' }
7
+ let( :lines ) { `wc -l #{filename}`.to_i }
8
+
9
+ it "should write all messages from one instance" do
10
+ logger = Yell.new( filename )
11
+
12
+ (1..threads).map do |count|
13
+ Thread.new { 10.times { logger.info count } }
14
+ end.each(&:join)
15
+
16
+ lines.should == 10*threads
17
+ end
18
+
19
+ # it "should write all messages from multiple instances" do
20
+ # (1..threads).map do |count|
21
+ # logger = Yell.new( filename )
22
+
23
+ # Thread.new do
24
+ # 10.times { logger.info count }
25
+ # end
26
+ # end.each(&:join)
27
+
28
+ # lines.should == 10*threads
29
+ # end
30
+
31
+ it "should write all messages from one repository" do
32
+ Yell[ 'threaded' ] = Yell.new( filename )
33
+
34
+ (1..threads).map do |count|
35
+ Thread.new { 10.times { Yell['threaded'].info count } }
36
+ end.each(&:join)
37
+
38
+ lines.should == 10*threads
39
+ end
40
+
41
+ end
@@ -54,7 +54,7 @@ describe Yell::Event do
54
54
  end
55
55
 
56
56
  context :time do
57
- subject { event.time }
57
+ subject { event.time.to_s }
58
58
 
59
59
  let(:time) { Time.now }
60
60
 
@@ -62,7 +62,7 @@ describe Yell::Event do
62
62
  Timecop.freeze( time )
63
63
  end
64
64
 
65
- it { should == time }
65
+ it { should == time.to_s }
66
66
  end
67
67
 
68
68
  context :hostname do
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ describe Yell::Repository do
4
+ let( :name ) { 'test' }
5
+ let( :logger ) { Yell.new :stdout }
6
+
7
+ subject { Yell[name] }
8
+
9
+
10
+ context ".[]" do
11
+ context "when not set" do
12
+ it { should be_nil }
13
+ end
14
+
15
+ context "when assigned" do
16
+ before do
17
+ Yell[ name ] = logger
18
+ end
19
+
20
+ it { should == logger }
21
+ end
22
+ end
23
+
24
+ context ".[]=" do
25
+ before do
26
+ Yell[ name ] = logger
27
+ end
28
+
29
+ it { should == logger }
30
+ end
31
+
32
+ end
33
+
metadata CHANGED
@@ -1,97 +1,108 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: yell
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.13.0
4
5
  prerelease:
5
- version: 0.12.1
6
6
  platform: ruby
7
- authors:
8
- - Rudolf Schmidt
7
+ authors:
8
+ - Rudolf Schmidt
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2012-08-29 00:00:00 Z
12
+ date: 2012-09-04 00:00:00.000000000 Z
14
13
  dependencies: []
15
-
16
- description: Yell - Your Extensible Logging Library. Define multiple adapters, various log level combinations or message formatting options like you've never done before
14
+ description: Yell - Your Extensible Logging Library. Define multiple adapters, various
15
+ log level combinations or message formatting options like you've never done before
17
16
  email:
18
17
  executables: []
19
-
20
18
  extensions: []
21
-
22
19
  extra_rdoc_files: []
23
-
24
- files:
25
- - .gitignore
26
- - .travis.yml
27
- - Gemfile
28
- - LICENSE.txt
29
- - README.md
30
- - Rakefile
31
- - examples/001-basic-usage.rb
32
- - examples/002.1-log-level-basics.rb
33
- - examples/002.2-log-level-on-certain-severities-only.rb
34
- - examples/002.3-log-level-within-range.rb
35
- - examples/003.1-formatting-DefaultFormat.rb
36
- - examples/003.2-formatting-BasicFormat.rb
37
- - examples/003.3-formatting-ExtendedFormat.rb
38
- - examples/003.4-formatting-on-your-own.rb
39
- - examples/004.1-colorizing-the-log-output.rb
40
- - lib/yell.rb
41
- - lib/yell/adapters.rb
42
- - lib/yell/adapters/base.rb
43
- - lib/yell/adapters/datefile.rb
44
- - lib/yell/adapters/file.rb
45
- - lib/yell/adapters/io.rb
46
- - lib/yell/adapters/streams.rb
47
- - lib/yell/configuration.rb
48
- - lib/yell/event.rb
49
- - lib/yell/formatter.rb
50
- - lib/yell/level.rb
51
- - lib/yell/logger.rb
52
- - lib/yell/version.rb
53
- - spec/fixtures/yell.yml
54
- - spec/spec_helper.rb
55
- - spec/yell/adapters/base_spec.rb
56
- - spec/yell/adapters/datefile_spec.rb
57
- - spec/yell/adapters/file_spec.rb
58
- - spec/yell/adapters/io_spec.rb
59
- - spec/yell/adapters/streams_spec.rb
60
- - spec/yell/adapters_spec.rb
61
- - spec/yell/configuration_spec.rb
62
- - spec/yell/event_spec.rb
63
- - spec/yell/formatter_spec.rb
64
- - spec/yell/level_spec.rb
65
- - spec/yell/logger_spec.rb
66
- - spec/yell_spec.rb
67
- - yell.gemspec
20
+ files:
21
+ - .gitignore
22
+ - .travis.yml
23
+ - Gemfile
24
+ - LICENSE.txt
25
+ - README.md
26
+ - Rakefile
27
+ - examples/001-basic-usage.rb
28
+ - examples/002.1-log-level-basics.rb
29
+ - examples/002.2-log-level-on-certain-severities-only.rb
30
+ - examples/002.3-log-level-within-range.rb
31
+ - examples/003.1-formatting-DefaultFormat.rb
32
+ - examples/003.2-formatting-BasicFormat.rb
33
+ - examples/003.3-formatting-ExtendedFormat.rb
34
+ - examples/003.4-formatting-on-your-own.rb
35
+ - examples/004.1-colorizing-the-log-output.rb
36
+ - lib/yell.rb
37
+ - lib/yell/adapters.rb
38
+ - lib/yell/adapters/base.rb
39
+ - lib/yell/adapters/datefile.rb
40
+ - lib/yell/adapters/file.rb
41
+ - lib/yell/adapters/io.rb
42
+ - lib/yell/adapters/streams.rb
43
+ - lib/yell/configuration.rb
44
+ - lib/yell/event.rb
45
+ - lib/yell/formatter.rb
46
+ - lib/yell/level.rb
47
+ - lib/yell/logger.rb
48
+ - lib/yell/repository.rb
49
+ - lib/yell/version.rb
50
+ - spec/fixtures/yell.yml
51
+ - spec/spec_helper.rb
52
+ - spec/threaded/yell_spec.rb
53
+ - spec/yell/adapters/base_spec.rb
54
+ - spec/yell/adapters/datefile_spec.rb
55
+ - spec/yell/adapters/file_spec.rb
56
+ - spec/yell/adapters/io_spec.rb
57
+ - spec/yell/adapters/streams_spec.rb
58
+ - spec/yell/adapters_spec.rb
59
+ - spec/yell/configuration_spec.rb
60
+ - spec/yell/event_spec.rb
61
+ - spec/yell/formatter_spec.rb
62
+ - spec/yell/level_spec.rb
63
+ - spec/yell/logger_spec.rb
64
+ - spec/yell/repository_spec.rb
65
+ - spec/yell_spec.rb
66
+ - yell.gemspec
68
67
  homepage: http://rudionrails.github.com/yell
69
68
  licenses: []
70
-
71
69
  post_install_message:
72
70
  rdoc_options: []
73
-
74
- require_paths:
75
- - lib
76
- required_ruby_version: !ruby/object:Gem::Requirement
71
+ require_paths:
72
+ - lib
73
+ required_ruby_version: !ruby/object:Gem::Requirement
77
74
  none: false
78
- requirements:
79
- - - ">="
80
- - !ruby/object:Gem::Version
81
- version: "0"
82
- required_rubygems_version: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ required_rubygems_version: !ruby/object:Gem::Requirement
83
80
  none: false
84
- requirements:
85
- - - ">="
86
- - !ruby/object:Gem::Version
87
- version: "0"
81
+ requirements:
82
+ - - ! '>='
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
88
85
  requirements: []
89
-
90
86
  rubyforge_project: yell
91
- rubygems_version: 1.8.15
87
+ rubygems_version: 1.8.23
92
88
  signing_key:
93
89
  specification_version: 3
94
90
  summary: Yell - Your Extensible Logging Library
95
- test_files: []
96
-
91
+ test_files:
92
+ - spec/fixtures/yell.yml
93
+ - spec/spec_helper.rb
94
+ - spec/threaded/yell_spec.rb
95
+ - spec/yell/adapters/base_spec.rb
96
+ - spec/yell/adapters/datefile_spec.rb
97
+ - spec/yell/adapters/file_spec.rb
98
+ - spec/yell/adapters/io_spec.rb
99
+ - spec/yell/adapters/streams_spec.rb
100
+ - spec/yell/adapters_spec.rb
101
+ - spec/yell/configuration_spec.rb
102
+ - spec/yell/event_spec.rb
103
+ - spec/yell/formatter_spec.rb
104
+ - spec/yell/level_spec.rb
105
+ - spec/yell/logger_spec.rb
106
+ - spec/yell/repository_spec.rb
107
+ - spec/yell_spec.rb
97
108
  has_rdoc: