yell 1.4.0 → 2.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +6 -2
- data/.ruby-version +1 -0
- data/.travis.yml +16 -13
- data/Gemfile +15 -8
- data/LICENSE.txt +1 -1
- data/README.md +10 -3
- data/Rakefile +1 -3
- data/examples/002.1-log-level-basics.rb +2 -2
- data/examples/002.2-log-level-on-certain-severities-only.rb +5 -4
- data/examples/002.3-log-level-within-range.rb +7 -5
- data/examples/003.1-formatting-DefaultFormat.rb +3 -3
- data/examples/003.2-formatting-BasicFormat.rb +3 -3
- data/examples/003.3-formatting-ExtendedFormat.rb +3 -3
- data/examples/003.4-formatting-on-your-own.rb +3 -3
- data/examples/004.1-colorizing-the-log-output.rb +3 -3
- data/examples/005.1-repository.rb +3 -3
- data/examples/006.1-the-loggable-module.rb +2 -2
- data/examples/006.2-the-loggable-module-with-inheritance.rb +2 -2
- data/lib/core_ext/logger.rb +17 -0
- data/lib/yell/adapters/base.rb +17 -22
- data/lib/yell/adapters/datefile.rb +23 -22
- data/lib/yell/adapters/file.rb +3 -7
- data/lib/yell/adapters/io.rb +9 -15
- data/lib/yell/adapters/streams.rb +0 -5
- data/lib/yell/adapters.rb +41 -10
- data/lib/yell/configuration.rb +2 -4
- data/lib/yell/event.rb +46 -10
- data/lib/yell/formatter.rb +134 -54
- data/lib/yell/helpers/{adapters.rb → adapter.rb} +7 -17
- data/lib/yell/helpers/base.rb +0 -1
- data/lib/yell/helpers/formatter.rb +8 -8
- data/lib/yell/helpers/level.rb +7 -4
- data/lib/yell/helpers/silencer.rb +3 -5
- data/lib/yell/helpers/tracer.rb +6 -7
- data/lib/yell/level.rb +19 -16
- data/lib/yell/loggable.rb +11 -7
- data/lib/yell/logger.rb +47 -68
- data/lib/yell/repository.rb +3 -5
- data/lib/yell/silencer.rb +30 -14
- data/lib/yell/version.rb +1 -4
- data/lib/yell.rb +29 -11
- data/yell.gemspec +22 -15
- metadata +19 -50
- data/spec/fixtures/yell.yml +0 -7
- data/spec/spec_helper.rb +0 -50
- data/spec/threaded/yell_spec.rb +0 -100
- data/spec/yell/adapters/base_spec.rb +0 -43
- data/spec/yell/adapters/datefile_spec.rb +0 -168
- data/spec/yell/adapters/file_spec.rb +0 -75
- data/spec/yell/adapters/io_spec.rb +0 -72
- data/spec/yell/adapters/streams_spec.rb +0 -26
- data/spec/yell/adapters_spec.rb +0 -45
- data/spec/yell/configuration_spec.rb +0 -36
- data/spec/yell/event_spec.rb +0 -97
- data/spec/yell/formatter_spec.rb +0 -136
- data/spec/yell/level_spec.rb +0 -200
- data/spec/yell/loggable_spec.rb +0 -20
- data/spec/yell/logger_spec.rb +0 -263
- data/spec/yell/repository_spec.rb +0 -70
- data/spec/yell/silencer_spec.rb +0 -49
- data/spec/yell_spec.rb +0 -102
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9aae01c5c4e5cf4acfc08f3579266c32410184de
|
4
|
+
data.tar.gz: 54dc91a4941d54b7f4175ef2712145f668d48596
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8626bd806d18be33a32b60ca0c67be823592a75be9fa8c2f98ced0fa2b01e9af4efc959c120753a4eb68a15181ed7ba9748476c96601a3ad53f718c6b6b353af
|
7
|
+
data.tar.gz: 70e688475cadc7ea3d7a6add37a11a70f3214056e4d377a70c447c01824a94bb29ab23a782dbc145ce4dd3e555719bf9bf27ea4a451d2caec223be5d269eb7b2
|
data/.gitignore
CHANGED
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.3.1
|
data/.travis.yml
CHANGED
@@ -1,17 +1,20 @@
|
|
1
1
|
language: ruby
|
2
|
+
before_install: gem install bundler
|
3
|
+
script: "bundle exec rspec"
|
2
4
|
|
3
|
-
|
4
|
-
|
5
|
-
rvm:
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
5
|
+
matrix:
|
6
|
+
include:
|
7
|
+
- rvm: ruby-head
|
8
|
+
- rvm: 2.6
|
9
|
+
- rvm: 2.5
|
10
|
+
- rvm: 2.4
|
11
|
+
- rvm: 2.3
|
12
|
+
- rvm: jruby-9.1
|
13
|
+
- rvm: jruby-9.2
|
14
|
+
allow_failures:
|
15
|
+
- rvm: ruby-head
|
16
|
+
- rvm: jruby-head
|
14
17
|
|
15
18
|
notifications:
|
16
|
-
|
17
|
-
|
19
|
+
on_success: change
|
20
|
+
on_failure: change
|
data/Gemfile
CHANGED
@@ -1,17 +1,24 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
source 'http://rubygems.org'
|
2
4
|
|
3
5
|
# Specify your gem's dependencies in yell.gemspec
|
4
6
|
gemspec
|
5
7
|
|
6
8
|
group :development, :test do
|
7
|
-
gem
|
9
|
+
gem 'rake'
|
8
10
|
|
9
|
-
gem 'rspec-core'
|
11
|
+
gem 'rspec-core', '~> 3'
|
10
12
|
gem 'rspec-expectations'
|
11
|
-
gem
|
12
|
-
gem
|
13
|
+
gem 'rspec-its'
|
14
|
+
gem 'rspec-mocks'
|
13
15
|
|
14
|
-
gem '
|
15
|
-
gem '
|
16
|
-
end
|
16
|
+
gem 'byebug', platform: :mri
|
17
|
+
gem 'timecop'
|
17
18
|
|
19
|
+
gem 'activesupport', '~> 5'
|
20
|
+
|
21
|
+
gem 'coveralls', require: false
|
22
|
+
gem 'rubocop', require: false
|
23
|
+
gem 'simplecov', require: false
|
24
|
+
end
|
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
@@ -1,9 +1,12 @@
|
|
1
|
-
# Yell [![Gem Version](https://badge.fury.io/rb/yell.
|
1
|
+
# Yell [![Gem Version](https://badge.fury.io/rb/yell.svg)](http://badge.fury.io/rb/yell) [![Build Status](https://travis-ci.org/rudionrails/yell.svg?branch=master)](https://travis-ci.org/rudionrails/yell) [![Code Climate](https://codeclimate.com/github/rudionrails/yell.svg)](https://codeclimate.com/github/rudionrails/yell) [![Coverage Status](https://coveralls.io/repos/rudionrails/yell/badge.svg?branch=master)](https://coveralls.io/r/rudionrails/yell)
|
2
2
|
|
3
3
|
|
4
4
|
**Yell - Your Extensible Logging Library** is a comprehensive logging replacement for Ruby.
|
5
5
|
|
6
|
-
Yell works and
|
6
|
+
Yell works and its test suite currently runs on:
|
7
|
+
|
8
|
+
- ruby-head, 2.3.1, 2.2.5, 2.2.2, 2.1.0, 2.0.0
|
9
|
+
- jruby-head, jruby-9.1.0.0, jruby-9.0.0.0
|
7
10
|
|
8
11
|
If you want to conveniently use Yell with Rails, then head over to [yell-rails](https://github.com/rudionrails/yell-rails). You'll find all the documentation in this repository, though.
|
9
12
|
|
@@ -189,6 +192,8 @@ logger.debug 'Started GET "/assets/logo.png" for 127.0.0.1 at 2013-06-20 10:18:3
|
|
189
192
|
logger.debug 'Served asset /logo.png - 304 Not Modified (0ms)'
|
190
193
|
```
|
191
194
|
|
195
|
+
### Alter log messages with modifiers
|
196
|
+
|
192
197
|
|
193
198
|
## Further Readings
|
194
199
|
|
@@ -201,7 +206,9 @@ logger.debug 'Served asset /logo.png - 304 Not Modified (0ms)'
|
|
201
206
|
|
202
207
|
### Additional Adapters
|
203
208
|
[Syslog](https://github.com/rudionrails/yell/wiki/additional-adapters-syslog)
|
209
|
+
[syslog-sd](https://github.com/raymond-wells/yell-adapters-syslogsd)
|
204
210
|
[Graylog2 (GELF)](https://github.com/rudionrails/yell/wiki/additional-adapters-gelf)
|
211
|
+
[Fluentd](https://github.com/red5studios/yell-adapters-fluentd)
|
205
212
|
|
206
213
|
|
207
214
|
### Development
|
@@ -212,5 +219,5 @@ You can find further examples and additional adapters in the [wiki](https://gith
|
|
212
219
|
or have a look into the examples folder.
|
213
220
|
|
214
221
|
|
215
|
-
Copyright © 2011-
|
222
|
+
Copyright © 2011-current Rudolf Schmidt, released under the MIT license
|
216
223
|
|
data/Rakefile
CHANGED
@@ -7,7 +7,7 @@ puts <<-EOS
|
|
7
7
|
# Like many other logging libraries, Yell allows you to define from which level
|
8
8
|
# onwards you want to write your log message.
|
9
9
|
|
10
|
-
logger = Yell.new STDOUT, :
|
10
|
+
logger = Yell.new STDOUT, level: :info
|
11
11
|
|
12
12
|
logger.debug "This is a :debug message"
|
13
13
|
#=> nil
|
@@ -19,7 +19,7 @@ logger.info "This is a :info message"
|
|
19
19
|
EOS
|
20
20
|
|
21
21
|
puts "=== actual example ==="
|
22
|
-
logger = Yell.new STDOUT, :
|
22
|
+
logger = Yell.new STDOUT, level: :info
|
23
23
|
|
24
24
|
logger.debug "This is a :debug message"
|
25
25
|
logger.info "This is a :info message"
|
@@ -7,10 +7,11 @@ puts <<-EOS
|
|
7
7
|
# The Yell::Level parser allows you to exactly specify on which levels to log,
|
8
8
|
# ignoring all the others. For instance: If we want to only log at the :debug
|
9
9
|
# and :warn levels we simply providing an array:
|
10
|
+
# * %i[] is a built-in for an array of symbols
|
10
11
|
|
11
|
-
logger = Yell.new STDOUT, :
|
12
|
+
logger = Yell.new STDOUT, level: %i[debug warn]
|
12
13
|
|
13
|
-
[
|
14
|
+
%i[debug info warn error fatal].each do |level|
|
14
15
|
logger.send( level, level )
|
15
16
|
end
|
16
17
|
#=> "2012-02-29T09:30:00+01:00 [DEBUG] 65784 : debug"
|
@@ -20,9 +21,9 @@ end
|
|
20
21
|
EOS
|
21
22
|
|
22
23
|
puts "=== actual example ==="
|
23
|
-
logger = Yell.new STDOUT, :
|
24
|
+
logger = Yell.new STDOUT, level: %i[debug warn]
|
24
25
|
|
25
|
-
[
|
26
|
+
%i[debug info warn error fatal].each do |level|
|
26
27
|
logger.send( level, level )
|
27
28
|
end
|
28
29
|
|
@@ -6,10 +6,12 @@ puts <<-EOS
|
|
6
6
|
|
7
7
|
# Additionally to writing only on specific levels, you may pass a range to
|
8
8
|
# the :level option:
|
9
|
+
# * %i[] is a built-in for an array of symbols
|
9
10
|
|
10
|
-
logger = Yell.new STDOUT, :level => (:debug..:warn)
|
11
11
|
|
12
|
-
|
12
|
+
logger = Yell.new STDOUT, level: (:debug..:warn)
|
13
|
+
|
14
|
+
%i[debug info warn error fatal].each do |level|
|
13
15
|
logger.send( level, level )
|
14
16
|
end
|
15
17
|
#=> "2012-02-29T09:30:00+01:00 [DEBUG] 65784 : debug"
|
@@ -19,10 +21,10 @@ end
|
|
19
21
|
|
20
22
|
EOS
|
21
23
|
|
22
|
-
puts "===
|
23
|
-
logger = Yell.new STDOUT, :
|
24
|
+
puts "=== actual example ==="
|
25
|
+
logger = Yell.new STDOUT, level: (:debug..:warn)
|
24
26
|
|
25
|
-
[
|
27
|
+
%i[debug info warn error fatal].each do |level|
|
26
28
|
logger.send( level, level )
|
27
29
|
end
|
28
30
|
|
@@ -7,7 +7,7 @@ puts <<-EOS
|
|
7
7
|
# The default formatting string looks like: %d [%5L] %p : %m and is used when
|
8
8
|
# nothing else is defined.
|
9
9
|
|
10
|
-
logger = Yell.new STDOUT, :
|
10
|
+
logger = Yell.new STDOUT, format: Yell::DefaultFormat
|
11
11
|
logger.info "Hello World!"
|
12
12
|
#=> "2012-02-29T09:30:00+01:00 [ INFO] 65784 : Hello World!"
|
13
13
|
# ^ ^ ^ ^
|
@@ -16,7 +16,7 @@ logger.info "Hello World!"
|
|
16
16
|
|
17
17
|
EOS
|
18
18
|
|
19
|
-
puts "===
|
20
|
-
logger = Yell.new STDOUT, :
|
19
|
+
puts "=== actual example ==="
|
20
|
+
logger = Yell.new STDOUT, format: Yell::DefaultFormat
|
21
21
|
logger.info "Hello World!"
|
22
22
|
|
@@ -6,7 +6,7 @@ puts <<-EOS
|
|
6
6
|
|
7
7
|
# The basic formating string looks like: %l, %d: %m.
|
8
8
|
|
9
|
-
logger = Yell.new STDOUT, :
|
9
|
+
logger = Yell.new STDOUT, format: Yell::BasicFormat
|
10
10
|
logger.info "Hello World!"
|
11
11
|
#=> "I, 2012-02-29T09:30:00+01:00 : Hello World!"
|
12
12
|
# ^ ^ ^
|
@@ -16,7 +16,7 @@ logger.info "Hello World!"
|
|
16
16
|
|
17
17
|
EOS
|
18
18
|
|
19
|
-
puts "===
|
20
|
-
logger = Yell.new STDOUT, :
|
19
|
+
puts "=== actual example ==="
|
20
|
+
logger = Yell.new STDOUT, format: Yell::BasicFormat
|
21
21
|
logger.info "Hello World!"
|
22
22
|
|
@@ -6,7 +6,7 @@ puts <<-EOS
|
|
6
6
|
|
7
7
|
# The extended formatting string looks like: %d [%5L] %p %h : %m.
|
8
8
|
|
9
|
-
logger = Yell.new STDOUT, :
|
9
|
+
logger = Yell.new STDOUT, format: Yell::ExtendedFormat
|
10
10
|
logger.info "Hello World!"
|
11
11
|
#=> "2012-02-29T09:30:00+01:00 [ INFO] 65784 localhost : Hello World!"
|
12
12
|
# ^ ^ ^ ^ ^
|
@@ -15,7 +15,7 @@ logger.info "Hello World!"
|
|
15
15
|
|
16
16
|
EOS
|
17
17
|
|
18
|
-
puts "===
|
19
|
-
logger = Yell.new STDOUT, :
|
18
|
+
puts "=== actual example ==="
|
19
|
+
logger = Yell.new STDOUT, format: Yell::ExtendedFormat
|
20
20
|
logger.info "Hello World!"
|
21
21
|
|
@@ -6,7 +6,7 @@ puts <<-EOS
|
|
6
6
|
|
7
7
|
# The extended formatting string looks like: %d [%5L] %p %h : %m.
|
8
8
|
|
9
|
-
logger = Yell.new STDOUT, :
|
9
|
+
logger = Yell.new STDOUT, format: "[%f:%n in `%M'] %m", trace: true
|
10
10
|
logger.info "Hello World!"
|
11
11
|
#=> [003.4-formatting-on-your-own.rb:20 in `<main>'] Hello World!
|
12
12
|
# ^ ^ ^ ^
|
@@ -15,7 +15,7 @@ logger.info "Hello World!"
|
|
15
15
|
|
16
16
|
EOS
|
17
17
|
|
18
|
-
puts "===
|
19
|
-
logger = Yell.new STDOUT, :
|
18
|
+
puts "=== actual example ==="
|
19
|
+
logger = Yell.new STDOUT, format: "[%f:%n in `%M'] %m", trace: true
|
20
20
|
logger.info "Hello World!"
|
21
21
|
|
@@ -6,7 +6,7 @@ puts <<-EOS
|
|
6
6
|
|
7
7
|
You may colorize the log output on your io-based loggers loke so:
|
8
8
|
|
9
|
-
logger = Yell.new STDOUT, :
|
9
|
+
logger = Yell.new STDOUT, colors: true
|
10
10
|
|
11
11
|
Yell::Severities.each do |level|
|
12
12
|
logger.send level.downcase, level
|
@@ -14,8 +14,8 @@ end
|
|
14
14
|
|
15
15
|
EOS
|
16
16
|
|
17
|
-
puts "===
|
18
|
-
logger = Yell.new STDOUT, :
|
17
|
+
puts "=== actual example ==="
|
18
|
+
logger = Yell.new STDOUT, colors: true
|
19
19
|
|
20
20
|
Yell::Severities.each do |level|
|
21
21
|
logger.send level.downcase, level
|
@@ -7,7 +7,7 @@ puts <<-EOS
|
|
7
7
|
# You can add a logger to the global repository.
|
8
8
|
#
|
9
9
|
# create a logger named 'mylog' that logs to stdout
|
10
|
-
Yell.new :stdout, :
|
10
|
+
Yell.new :stdout, name: 'mylog'
|
11
11
|
|
12
12
|
# Later in the code, you can get your logger back
|
13
13
|
Yell['mylog'].info "Hello World!"
|
@@ -15,7 +15,7 @@ Yell['mylog'].info "Hello World!"
|
|
15
15
|
|
16
16
|
EOS
|
17
17
|
|
18
|
-
puts "===
|
19
|
-
Yell.new :stdout, :
|
18
|
+
puts "=== actual example ==="
|
19
|
+
Yell.new :stdout, name: 'mylog'
|
20
20
|
Yell['mylog'].info "Hello World!"
|
21
21
|
|
@@ -10,7 +10,7 @@ puts <<-EOS
|
|
10
10
|
# can use it, though, you will need to define a logger providing the :name of
|
11
11
|
# your class.
|
12
12
|
|
13
|
-
Yell.new :stdout, :
|
13
|
+
Yell.new :stdout, name: 'Foo'
|
14
14
|
|
15
15
|
# Define the class
|
16
16
|
class Foo
|
@@ -26,7 +26,7 @@ EOS
|
|
26
26
|
|
27
27
|
puts "=== actual example ==="
|
28
28
|
|
29
|
-
Yell.new :stdout, :
|
29
|
+
Yell.new :stdout, name: 'Foo'
|
30
30
|
|
31
31
|
class Foo
|
32
32
|
include Yell::Loggable
|
@@ -10,7 +10,7 @@ puts <<-EOS
|
|
10
10
|
# can use it, though, you will need to define a logger providing the :name of
|
11
11
|
# your class.
|
12
12
|
|
13
|
-
Yell.new :stdout, :
|
13
|
+
Yell.new :stdout, name: 'Foo'
|
14
14
|
|
15
15
|
# Define the class
|
16
16
|
class Foo
|
@@ -28,7 +28,7 @@ EOS
|
|
28
28
|
|
29
29
|
puts "=== actual example ==="
|
30
30
|
|
31
|
-
Yell.new :stdout, :
|
31
|
+
Yell.new :stdout, name: 'Foo'
|
32
32
|
|
33
33
|
class Foo
|
34
34
|
include Yell::Loggable
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'logger'
|
2
|
+
|
3
|
+
class Logger
|
4
|
+
|
5
|
+
def level_with_yell=( level )
|
6
|
+
self.level_without_yell= level.is_a?(Yell::Level) ? Integer(level) : level
|
7
|
+
end
|
8
|
+
alias_method :level_without_yell=, :level=
|
9
|
+
alias_method :level=, :level_with_yell=
|
10
|
+
|
11
|
+
def add_with_yell( severity, message = nil, progname = nil, &block )
|
12
|
+
add_without_yell(Integer(severity), message, progname, &block)
|
13
|
+
end
|
14
|
+
alias_method :add_without_yell, :add
|
15
|
+
alias_method :add, :add_with_yell
|
16
|
+
|
17
|
+
end
|
data/lib/yell/adapters/base.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
require 'monitor'
|
4
2
|
|
5
3
|
module Yell #:nodoc:
|
@@ -25,7 +23,7 @@ module Yell #:nodoc:
|
|
25
23
|
# end
|
26
24
|
#
|
27
25
|
# write do |event|
|
28
|
-
# message = format.
|
26
|
+
# message = format.call(event)
|
29
27
|
#
|
30
28
|
# STDOUT.puts message
|
31
29
|
# end
|
@@ -52,7 +50,7 @@ module Yell #:nodoc:
|
|
52
50
|
# @file_handle = File.new( '/dev/null', 'w' )
|
53
51
|
# end
|
54
52
|
def setup( &block )
|
55
|
-
compile!(
|
53
|
+
compile!(:setup!, &block)
|
56
54
|
end
|
57
55
|
|
58
56
|
# Define your write method with this helper.
|
@@ -62,7 +60,7 @@ module Yell #:nodoc:
|
|
62
60
|
# @file_handle.puts event.message
|
63
61
|
# end
|
64
62
|
def write( &block )
|
65
|
-
compile!(
|
63
|
+
compile!(:write!, &block)
|
66
64
|
end
|
67
65
|
|
68
66
|
# Define your open method with this helper.
|
@@ -72,7 +70,7 @@ module Yell #:nodoc:
|
|
72
70
|
# @stream = ::File.open( 'test.log', ::File::WRONLY|::File::APPEND|::File::CREAT )
|
73
71
|
# end
|
74
72
|
def open( &block )
|
75
|
-
compile!(
|
73
|
+
compile!(:open!, &block)
|
76
74
|
end
|
77
75
|
|
78
76
|
# Define your close method with this helper.
|
@@ -82,7 +80,7 @@ module Yell #:nodoc:
|
|
82
80
|
# @stream.close
|
83
81
|
# end
|
84
82
|
def close( &block )
|
85
|
-
compile!(
|
83
|
+
compile!(:close!, &block)
|
86
84
|
end
|
87
85
|
|
88
86
|
|
@@ -106,24 +104,24 @@ module Yell #:nodoc:
|
|
106
104
|
m = instance_method( name )
|
107
105
|
|
108
106
|
# Create a new method with leading underscore
|
109
|
-
define_method(
|
110
|
-
_m = instance_method(
|
111
|
-
remove_method(
|
107
|
+
define_method("_#{name}", &block)
|
108
|
+
_m = instance_method("_#{name}")
|
109
|
+
remove_method("_#{name}")
|
112
110
|
|
113
111
|
# Define instance method
|
114
|
-
define!(
|
112
|
+
define!(name, _m, m, &block)
|
115
113
|
end
|
116
114
|
|
117
115
|
# Define instance method by given name and call the unbound
|
118
116
|
# methods in order with provided block.
|
119
117
|
def define!( name, _m, m, &block )
|
120
118
|
if block.arity == 0
|
121
|
-
define_method(
|
119
|
+
define_method(name) do
|
122
120
|
_m.bind(self).call
|
123
121
|
m.bind(self).call
|
124
122
|
end
|
125
123
|
else
|
126
|
-
define_method(
|
124
|
+
define_method(name) do |*args|
|
127
125
|
_m.bind(self).call(*args)
|
128
126
|
m.bind(self).call(*args)
|
129
127
|
end
|
@@ -155,7 +153,7 @@ module Yell #:nodoc:
|
|
155
153
|
# make sure the adapter is closed and re-raise the exception
|
156
154
|
synchronize { close }
|
157
155
|
|
158
|
-
raise(
|
156
|
+
raise(e)
|
159
157
|
end
|
160
158
|
|
161
159
|
# Close the adapter (stream, connection, etc).
|
@@ -172,18 +170,15 @@ module Yell #:nodoc:
|
|
172
170
|
"#<#{self.class.name} #{inspection * ', '}>"
|
173
171
|
end
|
174
172
|
|
175
|
-
private
|
176
173
|
|
177
|
-
|
178
|
-
# super()
|
179
|
-
# end
|
174
|
+
private
|
180
175
|
|
181
176
|
# Setup the adapter instance.
|
182
177
|
#
|
183
178
|
# Adapter classes should provide their own implementation
|
184
179
|
# of this method (if applicable).
|
185
180
|
def setup!( options )
|
186
|
-
self.level = options
|
181
|
+
self.level = Yell.__fetch__(options, :level)
|
187
182
|
end
|
188
183
|
|
189
184
|
# Perform the actual write.
|
@@ -213,18 +208,18 @@ module Yell #:nodoc:
|
|
213
208
|
# Determine whether to write at the given severity.
|
214
209
|
#
|
215
210
|
# @example
|
216
|
-
# write? Yell::Event.new( 'INFO', '
|
211
|
+
# write? Yell::Event.new( 'INFO', 'Hello Wold!' )
|
217
212
|
#
|
218
213
|
# @param [Yell::Event] event The log event
|
219
214
|
#
|
220
215
|
# @return [Boolean] true or false
|
221
216
|
def write?( event )
|
222
|
-
|
217
|
+
level.nil? || level.at?(event.level)
|
223
218
|
end
|
224
219
|
|
225
220
|
# Get an array of inspected attributes for the adapter.
|
226
221
|
def inspectables
|
227
|
-
[
|
222
|
+
[:level]
|
228
223
|
end
|
229
224
|
|
230
225
|
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
module Yell #:nodoc:
|
4
2
|
module Adapters #:nodoc:
|
5
3
|
|
@@ -54,16 +52,17 @@ module Yell #:nodoc:
|
|
54
52
|
|
55
53
|
# @overload setup!( options )
|
56
54
|
def setup!( options )
|
57
|
-
|
58
|
-
|
59
|
-
self.
|
60
|
-
self.
|
61
|
-
self.keep = options.fetch(:keep, false)
|
62
|
-
self.symlink = options.fetch(:symlink, true)
|
55
|
+
self.header = Yell.__fetch__(options, :header, default: true)
|
56
|
+
self.date_pattern = Yell.__fetch__(options, :date_pattern, default: DefaultDatePattern)
|
57
|
+
self.keep = Yell.__fetch__(options, :keep, default: false)
|
58
|
+
self.symlink = Yell.__fetch__(options, :symlink, default: true)
|
63
59
|
|
64
|
-
@original_filename = ::File.expand_path
|
60
|
+
@original_filename = ::File.expand_path(Yell.__fetch__(options, :filename, default: default_filename))
|
65
61
|
options[:filename] = @original_filename
|
66
62
|
|
63
|
+
@date = Time.now
|
64
|
+
@date_strftime = @date.strftime(date_pattern)
|
65
|
+
|
67
66
|
super
|
68
67
|
end
|
69
68
|
|
@@ -85,7 +84,7 @@ module Yell #:nodoc:
|
|
85
84
|
|
86
85
|
# @overload close!
|
87
86
|
def close!
|
88
|
-
@filename = filename_for(
|
87
|
+
@filename = filename_for(@date)
|
89
88
|
|
90
89
|
super
|
91
90
|
end
|
@@ -116,7 +115,7 @@ module Yell #:nodoc:
|
|
116
115
|
# it makes the best guess by checking the last access time (which may result
|
117
116
|
# in false cleanups).
|
118
117
|
def cleanup!
|
119
|
-
files = Dir[ @original_filename.sub(
|
118
|
+
files = Dir[ @original_filename.sub(/(\.\w+)?$/, ".*\\1") ].sort.select do |file|
|
120
119
|
_, pattern = header_from(file)
|
121
120
|
|
122
121
|
# Select if the date pattern is nil (no header info available within the file) or
|
@@ -139,14 +138,16 @@ module Yell #:nodoc:
|
|
139
138
|
# do nothing, because symlink is already correct
|
140
139
|
return if ::File.symlink?(@original_filename) && ::File.readlink(@original_filename) == @filename
|
141
140
|
|
142
|
-
::File.unlink(
|
143
|
-
::File.symlink(
|
141
|
+
::File.unlink(@original_filename) if ::File.exist?(@original_filename) || ::File.symlink?(@original_filename)
|
142
|
+
::File.symlink(@filename, @original_filename)
|
144
143
|
end
|
145
144
|
|
146
145
|
# Symlink the original filename?
|
147
146
|
#
|
148
147
|
# @return [Boolean] true or false
|
149
|
-
def symlink
|
148
|
+
def symlink?
|
149
|
+
!!symlink
|
150
|
+
end
|
150
151
|
|
151
152
|
# Write the header information into the file
|
152
153
|
def header!
|
@@ -156,36 +157,36 @@ module Yell #:nodoc:
|
|
156
157
|
# Write header into the file?
|
157
158
|
#
|
158
159
|
# @return [Boolean] true or false
|
159
|
-
def header
|
160
|
+
def header?
|
161
|
+
!!header
|
162
|
+
end
|
160
163
|
|
161
164
|
# Sets the filename with the `:date_pattern` appended to it.
|
162
165
|
def filename_for( date )
|
163
|
-
@original_filename.sub(
|
166
|
+
@original_filename.sub(/(\.\w+)?$/, ".#{date.strftime(date_pattern)}\\1")
|
164
167
|
end
|
165
168
|
|
166
169
|
# Fetch the header form the file
|
167
170
|
def header_from( file )
|
168
|
-
if m = ::File.open(
|
171
|
+
if m = ::File.open(file, &:readline).match(HeaderRegexp)
|
169
172
|
# in case there is a Header present, we can just read from it
|
170
|
-
[ Time.at(
|
173
|
+
[ Time.at(m[2].to_f), m[3] ]
|
171
174
|
else
|
172
175
|
# In case there is no header: we need to take a good guess
|
173
176
|
#
|
174
177
|
# Since the pattern can not be determined, we will just return the Posix ctime.
|
175
178
|
# That is NOT the creatint time, so the value will potentially be wrong!
|
176
|
-
[
|
179
|
+
[::File.ctime(file), nil]
|
177
180
|
end
|
178
181
|
end
|
179
182
|
|
180
183
|
# @overload inspectables
|
181
184
|
def inspectables
|
182
|
-
super.concat [
|
185
|
+
super.concat %i[date_pattern header keep symlink]
|
183
186
|
end
|
184
187
|
|
185
188
|
end
|
186
189
|
|
187
|
-
register( :datefile, Yell::Adapters::Datefile )
|
188
|
-
|
189
190
|
end
|
190
191
|
end
|
191
192
|
|