yell 2.0.0 → 2.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/yell.rb +12 -3
- data/lib/yell/adapters.rb +2 -2
- data/lib/yell/adapters/base.rb +12 -12
- data/lib/yell/adapters/datefile.rb +19 -15
- data/lib/yell/adapters/file.rb +3 -3
- data/lib/yell/adapters/io.rb +6 -6
- data/lib/yell/logger.rb +6 -6
- data/lib/yell/repository.rb +3 -3
- data/lib/yell/version.rb +1 -1
- data/spec/compatibility/activesupport_logger_spec.rb +6 -2
- data/spec/yell_spec.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aa1069934b048c65d5dbabcf49945cd08defdf1c
|
4
|
+
data.tar.gz: ed6c2a345a27ebc070468601ba71542ed90c0fa8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6622eba193295d3150f98c3dc17cc378b0ef373870cb8c01b8644baa32a4871bba79a24e058e02961dde0bca37005970da490ed2f36f43d6f56b754a49b727f7
|
7
|
+
data.tar.gz: 76098942230da8a9997d0010259802ca4dfaa02ea9b6a15ba642026987136a05dfc5019704ccb27263a48e4c54ff6265a14929e470ae1f7d03add1308b853ee3
|
data/lib/yell.rb
CHANGED
@@ -90,20 +90,29 @@ module Yell #:nodoc:
|
|
90
90
|
end
|
91
91
|
|
92
92
|
# @private
|
93
|
-
def
|
93
|
+
def __deprecate__( version, message, options = {} ) #:nodoc:
|
94
94
|
messages = ["Deprecation Warning (since v#{version}): #{message}" ]
|
95
95
|
messages << " before: #{options[:before]}" if options[:before]
|
96
96
|
messages << " after: #{options[:after]}" if options[:after]
|
97
97
|
|
98
|
-
|
98
|
+
__warn__(*messages)
|
99
99
|
end
|
100
100
|
|
101
101
|
# @private
|
102
|
-
def
|
102
|
+
def __warn__( *messages ) #:nodoc:
|
103
103
|
$stderr.puts "[Yell] " + messages.join("\n")
|
104
104
|
rescue Exception => e
|
105
105
|
# do nothing
|
106
106
|
end
|
107
|
+
|
108
|
+
# @private
|
109
|
+
def __fetch__( hash, *args )
|
110
|
+
options = args.last.is_a?(Hash) ? args.pop : {}
|
111
|
+
value = args.map { |key| hash.fetch(key.to_sym, hash[key.to_s]) }.compact.first
|
112
|
+
|
113
|
+
value.nil? ? options[:default] : value
|
114
|
+
end
|
115
|
+
|
107
116
|
end
|
108
117
|
|
109
118
|
end
|
data/lib/yell/adapters.rb
CHANGED
@@ -54,7 +54,7 @@ module Yell #:nodoc:
|
|
54
54
|
# @example
|
55
55
|
# Yell::Adapters.register( :myadapter, MyAdapter )
|
56
56
|
def self.register( name, klass )
|
57
|
-
@adapters[name] = klass
|
57
|
+
@adapters[name.to_sym] = klass
|
58
58
|
end
|
59
59
|
|
60
60
|
# Returns an instance of the given processor type.
|
@@ -67,7 +67,7 @@ module Yell #:nodoc:
|
|
67
67
|
adapter = case name
|
68
68
|
when STDOUT then @adapters[:stdout]
|
69
69
|
when STDERR then @adapters[:stderr]
|
70
|
-
else @adapters[name]
|
70
|
+
else @adapters[name.to_sym]
|
71
71
|
end
|
72
72
|
|
73
73
|
raise AdapterNotFound.new(name) if adapter.nil?
|
data/lib/yell/adapters/base.rb
CHANGED
@@ -52,7 +52,7 @@ module Yell #:nodoc:
|
|
52
52
|
# @file_handle = File.new( '/dev/null', 'w' )
|
53
53
|
# end
|
54
54
|
def setup( &block )
|
55
|
-
compile!(
|
55
|
+
compile!(:setup!, &block)
|
56
56
|
end
|
57
57
|
|
58
58
|
# Define your write method with this helper.
|
@@ -62,7 +62,7 @@ module Yell #:nodoc:
|
|
62
62
|
# @file_handle.puts event.message
|
63
63
|
# end
|
64
64
|
def write( &block )
|
65
|
-
compile!(
|
65
|
+
compile!(:write!, &block)
|
66
66
|
end
|
67
67
|
|
68
68
|
# Define your open method with this helper.
|
@@ -72,7 +72,7 @@ module Yell #:nodoc:
|
|
72
72
|
# @stream = ::File.open( 'test.log', ::File::WRONLY|::File::APPEND|::File::CREAT )
|
73
73
|
# end
|
74
74
|
def open( &block )
|
75
|
-
compile!(
|
75
|
+
compile!(:open!, &block)
|
76
76
|
end
|
77
77
|
|
78
78
|
# Define your close method with this helper.
|
@@ -82,7 +82,7 @@ module Yell #:nodoc:
|
|
82
82
|
# @stream.close
|
83
83
|
# end
|
84
84
|
def close( &block )
|
85
|
-
compile!(
|
85
|
+
compile!(:close!, &block)
|
86
86
|
end
|
87
87
|
|
88
88
|
|
@@ -106,24 +106,24 @@ module Yell #:nodoc:
|
|
106
106
|
m = instance_method( name )
|
107
107
|
|
108
108
|
# Create a new method with leading underscore
|
109
|
-
define_method(
|
110
|
-
_m = instance_method(
|
111
|
-
remove_method(
|
109
|
+
define_method("_#{name}", &block)
|
110
|
+
_m = instance_method("_#{name}")
|
111
|
+
remove_method("_#{name}")
|
112
112
|
|
113
113
|
# Define instance method
|
114
|
-
define!(
|
114
|
+
define!(name, _m, m, &block)
|
115
115
|
end
|
116
116
|
|
117
117
|
# Define instance method by given name and call the unbound
|
118
118
|
# methods in order with provided block.
|
119
119
|
def define!( name, _m, m, &block )
|
120
120
|
if block.arity == 0
|
121
|
-
define_method(
|
121
|
+
define_method(name) do
|
122
122
|
_m.bind(self).call
|
123
123
|
m.bind(self).call
|
124
124
|
end
|
125
125
|
else
|
126
|
-
define_method(
|
126
|
+
define_method(name) do |*args|
|
127
127
|
_m.bind(self).call(*args)
|
128
128
|
m.bind(self).call(*args)
|
129
129
|
end
|
@@ -180,7 +180,7 @@ module Yell #:nodoc:
|
|
180
180
|
# Adapter classes should provide their own implementation
|
181
181
|
# of this method (if applicable).
|
182
182
|
def setup!( options )
|
183
|
-
self.level = options
|
183
|
+
self.level = Yell.__fetch__(options,:level)
|
184
184
|
end
|
185
185
|
|
186
186
|
# Perform the actual write.
|
@@ -221,7 +221,7 @@ module Yell #:nodoc:
|
|
221
221
|
|
222
222
|
# Get an array of inspected attributes for the adapter.
|
223
223
|
def inspectables
|
224
|
-
[
|
224
|
+
[:level]
|
225
225
|
end
|
226
226
|
|
227
227
|
end
|
@@ -54,12 +54,12 @@ module Yell #:nodoc:
|
|
54
54
|
|
55
55
|
# @overload setup!( options )
|
56
56
|
def setup!( options )
|
57
|
-
self.header =
|
58
|
-
self.date_pattern =
|
59
|
-
self.keep =
|
60
|
-
self.symlink =
|
57
|
+
self.header = Yell.__fetch__(options, :header, :default => true)
|
58
|
+
self.date_pattern = Yell.__fetch__(options, :date_pattern, :default => DefaultDatePattern)
|
59
|
+
self.keep = Yell.__fetch__(options, :keep, :default => false)
|
60
|
+
self.symlink = Yell.__fetch__(options, :symlink, :default => true)
|
61
61
|
|
62
|
-
@original_filename = ::File.expand_path
|
62
|
+
@original_filename = ::File.expand_path(Yell.__fetch__(options, :filename, :default => default_filename))
|
63
63
|
options[:filename] = @original_filename
|
64
64
|
|
65
65
|
@date = Time.now
|
@@ -86,7 +86,7 @@ module Yell #:nodoc:
|
|
86
86
|
|
87
87
|
# @overload close!
|
88
88
|
def close!
|
89
|
-
@filename = filename_for(
|
89
|
+
@filename = filename_for(@date)
|
90
90
|
|
91
91
|
super
|
92
92
|
end
|
@@ -117,7 +117,7 @@ module Yell #:nodoc:
|
|
117
117
|
# it makes the best guess by checking the last access time (which may result
|
118
118
|
# in false cleanups).
|
119
119
|
def cleanup!
|
120
|
-
files = Dir[ @original_filename.sub(
|
120
|
+
files = Dir[ @original_filename.sub(/(\.\w+)?$/, ".*\\1") ].sort.select do |file|
|
121
121
|
_, pattern = header_from(file)
|
122
122
|
|
123
123
|
# Select if the date pattern is nil (no header info available within the file) or
|
@@ -140,14 +140,16 @@ module Yell #:nodoc:
|
|
140
140
|
# do nothing, because symlink is already correct
|
141
141
|
return if ::File.symlink?(@original_filename) && ::File.readlink(@original_filename) == @filename
|
142
142
|
|
143
|
-
::File.unlink(
|
144
|
-
::File.symlink(
|
143
|
+
::File.unlink(@original_filename) if ::File.exist?(@original_filename)
|
144
|
+
::File.symlink(@filename, @original_filename)
|
145
145
|
end
|
146
146
|
|
147
147
|
# Symlink the original filename?
|
148
148
|
#
|
149
149
|
# @return [Boolean] true or false
|
150
|
-
def symlink
|
150
|
+
def symlink?
|
151
|
+
!!symlink
|
152
|
+
end
|
151
153
|
|
152
154
|
# Write the header information into the file
|
153
155
|
def header!
|
@@ -157,24 +159,26 @@ module Yell #:nodoc:
|
|
157
159
|
# Write header into the file?
|
158
160
|
#
|
159
161
|
# @return [Boolean] true or false
|
160
|
-
def header
|
162
|
+
def header?
|
163
|
+
!!header
|
164
|
+
end
|
161
165
|
|
162
166
|
# Sets the filename with the `:date_pattern` appended to it.
|
163
167
|
def filename_for( date )
|
164
|
-
@original_filename.sub(
|
168
|
+
@original_filename.sub(/(\.\w+)?$/, ".#{date.strftime(date_pattern)}\\1")
|
165
169
|
end
|
166
170
|
|
167
171
|
# Fetch the header form the file
|
168
172
|
def header_from( file )
|
169
|
-
if m = ::File.open(
|
173
|
+
if m = ::File.open(file, &:readline).match(HeaderRegexp)
|
170
174
|
# in case there is a Header present, we can just read from it
|
171
|
-
[ Time.at(
|
175
|
+
[ Time.at(m[2].to_f), m[3] ]
|
172
176
|
else
|
173
177
|
# In case there is no header: we need to take a good guess
|
174
178
|
#
|
175
179
|
# Since the pattern can not be determined, we will just return the Posix ctime.
|
176
180
|
# That is NOT the creatint time, so the value will potentially be wrong!
|
177
|
-
[
|
181
|
+
[::File.ctime(file), nil]
|
178
182
|
end
|
179
183
|
end
|
180
184
|
|
data/lib/yell/adapters/file.rb
CHANGED
@@ -11,14 +11,14 @@ module Yell #:nodoc:
|
|
11
11
|
|
12
12
|
# @overload setup!( options )
|
13
13
|
def setup!( options )
|
14
|
-
@filename = ::File.expand_path
|
14
|
+
@filename = ::File.expand_path(Yell.__fetch__(options, :filename, :default => default_filename))
|
15
15
|
|
16
16
|
super
|
17
17
|
end
|
18
18
|
|
19
19
|
# @overload open!
|
20
20
|
def open!
|
21
|
-
@stream = ::File.open(
|
21
|
+
@stream = ::File.open(@filename, ::File::WRONLY|::File::APPEND|::File::CREAT)
|
22
22
|
|
23
23
|
super
|
24
24
|
end
|
@@ -26,7 +26,7 @@ module Yell #:nodoc:
|
|
26
26
|
def default_filename #:nodoc:
|
27
27
|
logdir = ::File.expand_path("log")
|
28
28
|
|
29
|
-
::File.expand_path
|
29
|
+
::File.expand_path(::File.directory?(logdir) ? "#{logdir}/#{Yell.env}.log" : "#{Yell.env}.log")
|
30
30
|
end
|
31
31
|
|
32
32
|
end
|
data/lib/yell/adapters/io.rb
CHANGED
@@ -45,9 +45,9 @@ module Yell #:nodoc:
|
|
45
45
|
def setup!( options )
|
46
46
|
@stream = nil
|
47
47
|
|
48
|
-
self.colors =
|
49
|
-
self.formatter =
|
50
|
-
self.sync =
|
48
|
+
self.colors = Yell.__fetch__(options, :colors, :default => false)
|
49
|
+
self.formatter = Yell.__fetch__(options, :format, :formatter)
|
50
|
+
self.sync = Yell.__fetch__(options, :sync, :default => true)
|
51
51
|
|
52
52
|
super
|
53
53
|
end
|
@@ -68,15 +68,15 @@ module Yell #:nodoc:
|
|
68
68
|
|
69
69
|
# @overload open!
|
70
70
|
def open!
|
71
|
-
@stream.sync = self.sync if @stream.respond_to?
|
72
|
-
@stream.flush
|
71
|
+
@stream.sync = self.sync if @stream.respond_to?(:sync)
|
72
|
+
@stream.flush if @stream.respond_to?(:flush)
|
73
73
|
|
74
74
|
super
|
75
75
|
end
|
76
76
|
|
77
77
|
# @overload close!
|
78
78
|
def close!
|
79
|
-
@stream.close if @stream.respond_to?
|
79
|
+
@stream.close if @stream.respond_to?(:close)
|
80
80
|
@stream = nil
|
81
81
|
|
82
82
|
super
|
data/lib/yell/logger.rb
CHANGED
@@ -53,16 +53,16 @@ module Yell #:nodoc:
|
|
53
53
|
reset!
|
54
54
|
|
55
55
|
# FIXME: :format is deprecated in future versions --R
|
56
|
-
self.formatter = @options
|
57
|
-
self.level = @options
|
58
|
-
self.name = @options
|
59
|
-
self.trace = @options
|
56
|
+
self.formatter = Yell.__fetch__(@options, :format, :formatter)
|
57
|
+
self.level = Yell.__fetch__(@options, :level, :default => 0)
|
58
|
+
self.name = Yell.__fetch__(@options, :name)
|
59
|
+
self.trace = Yell.__fetch__(@options, :trace, :default => :error)
|
60
60
|
|
61
61
|
# silencer
|
62
|
-
self.silence(
|
62
|
+
self.silence(*Yell.__fetch__(@options, :silence))
|
63
63
|
|
64
64
|
# adapters may be passed in the options
|
65
|
-
extract!(
|
65
|
+
extract!(*Yell.__fetch__(@options, :adapters))
|
66
66
|
|
67
67
|
# extract adapter
|
68
68
|
self.adapter(args.pop) if args.any?
|
data/lib/yell/repository.rb
CHANGED
@@ -35,7 +35,7 @@ module Yell #:nodoc:
|
|
35
35
|
# @raise [Yell::LoggerNotFound] Raised when repository does not have that key
|
36
36
|
# @return [Yell::Logger] The logger instance
|
37
37
|
def self.[]( name )
|
38
|
-
synchronize { instance.
|
38
|
+
synchronize { instance.__fetch__(name) or raise Yell::LoggerNotFound.new(name) }
|
39
39
|
end
|
40
40
|
|
41
41
|
# Get the list of all loggers in the repository
|
@@ -57,11 +57,11 @@ module Yell #:nodoc:
|
|
57
57
|
# If the logger could not be found and has a superclass, it
|
58
58
|
# will attempt to look there. This is important for the
|
59
59
|
# Yell::Loggable module.
|
60
|
-
def
|
60
|
+
def __fetch__( name )
|
61
61
|
logger = loggers[name] || loggers[name.to_s]
|
62
62
|
|
63
63
|
if logger.nil? && name.respond_to?(:superclass)
|
64
|
-
return
|
64
|
+
return __fetch__(name.superclass)
|
65
65
|
end
|
66
66
|
|
67
67
|
logger
|
data/lib/yell/version.rb
CHANGED
@@ -1,12 +1,16 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
require 'spec_helper'
|
3
|
-
|
3
|
+
|
4
|
+
begin
|
5
|
+
require 'active_support'
|
6
|
+
rescue LoadError
|
7
|
+
end
|
4
8
|
|
5
9
|
# make a setup just like in railties ~> 4.0.0
|
6
10
|
#
|
7
11
|
# We simulate the case when Rails 4 starts up its server
|
8
12
|
# and wants to append the log output.
|
9
|
-
describe "Compatibility to ActiveSupport::Logger" do
|
13
|
+
describe "Compatibility to ActiveSupport::Logger", pending: (!defined?(ActiveSupport) || ActiveSupport::VERSION::MAJOR < 4) do
|
10
14
|
|
11
15
|
let!(:yell) { Yell.new($stdout, :format => "%m") }
|
12
16
|
|
data/spec/yell_spec.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yell
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rudolf Schmidt
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-12-02 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Yell - Your Extensible Logging Library. Define multiple adapters, various
|
14
14
|
log level combinations or message formatting options like you've never done before
|