better-logger 0.0.1
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/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +119 -0
- data/Rakefile +9 -0
- data/better-logger.gemspec +23 -0
- data/examples/config.rb +22 -0
- data/examples/include.rb +11 -0
- data/lib/better-logger.rb +14 -0
- data/lib/better-logger/base.rb +26 -0
- data/lib/better-logger/config.rb +72 -0
- data/lib/better-logger/logger.rb +37 -0
- data/lib/better-logger/loggers.rb +9 -0
- data/lib/better-logger/version.rb +5 -0
- data/spec/logger_spec.rb +191 -0
- data/spec/spec_helper.rb +2 -0
- metadata +97 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2012 Sam Rose
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,119 @@
|
|
1
|
+
# Better::Logger
|
2
|
+
|
3
|
+
Better Logger is designed to be a replacement for the standard library logging
|
4
|
+
gem. There are a couple of things about the standard library gem that I don't
|
5
|
+
quite like:
|
6
|
+
|
7
|
+
- It puts errors in the same place as debug and info messages. I'd prefer my
|
8
|
+
logger to put errors in STDERR and everything else in STDOUT.
|
9
|
+
|
10
|
+
- Lots of people declare their loggers in different ways, there's no
|
11
|
+
convention around logging. I'd much prefer to be able to specify a
|
12
|
+
configuration block and then have a globally accessible logger.
|
13
|
+
|
14
|
+
- The default format of log output in the Ruby standard logger isn't very
|
15
|
+
useful in my opinion. I would prefer a default that has colours and
|
16
|
+
information about where in the code the log message came from.
|
17
|
+
|
18
|
+
This gem attempts to address all of these things. You may prefer the standard
|
19
|
+
Ruby implementation, and that's totally fine, I built this for me originally and
|
20
|
+
wanted to share it :)
|
21
|
+
|
22
|
+
## Installation
|
23
|
+
|
24
|
+
Add this line to your application's Gemfile:
|
25
|
+
|
26
|
+
gem 'better-logger'
|
27
|
+
|
28
|
+
And then execute:
|
29
|
+
|
30
|
+
$ bundle
|
31
|
+
|
32
|
+
Or install it yourself as:
|
33
|
+
|
34
|
+
$ gem install better-logger
|
35
|
+
|
36
|
+
## Usage
|
37
|
+
|
38
|
+
First thing you need to do is configure your logger:
|
39
|
+
|
40
|
+
``` ruby
|
41
|
+
require 'better-logger'
|
42
|
+
|
43
|
+
Better::Logger.config do |conf|
|
44
|
+
conf.color = true
|
45
|
+
conf.log_to = STDOUT
|
46
|
+
conf.error_to = STDERR
|
47
|
+
conf.log_level = :info
|
48
|
+
end
|
49
|
+
```
|
50
|
+
|
51
|
+
After this configuration block you will have access to a `log` object from
|
52
|
+
everywhere in your code. Its usage should be familiar:
|
53
|
+
|
54
|
+
``` ruby
|
55
|
+
# The following log methods are listed in order of their severity from least to
|
56
|
+
# most severe.
|
57
|
+
|
58
|
+
log.debug "This is a debug message. It goes to conf.log_to"
|
59
|
+
log.info "This is an info message. It goes to conf.log_to"
|
60
|
+
log.warn "This is a warn message. It goes to conf.log_to"
|
61
|
+
log.error "This is an error message. It does to conf.error_to"
|
62
|
+
log.fatal "This is also an error but more sever. It also goes to conf.error_to"
|
63
|
+
```
|
64
|
+
|
65
|
+
### Multiple logs
|
66
|
+
|
67
|
+
It's possible to have multiple logs in the same piece of code by passing a
|
68
|
+
symbol into the configure blocks:
|
69
|
+
|
70
|
+
``` ruby
|
71
|
+
require 'better-logger'
|
72
|
+
|
73
|
+
Better::Logger.config :log1 do |conf|
|
74
|
+
conf.color = true
|
75
|
+
conf.log_to = STDOUT
|
76
|
+
conf.error_to = STDERR
|
77
|
+
conf.log_level = :info
|
78
|
+
end
|
79
|
+
|
80
|
+
Better::Logger.config :log2 do |conf|
|
81
|
+
conf.color = true
|
82
|
+
conf.log_to = "log_output.log"
|
83
|
+
conf.error_to = "log_error.log"
|
84
|
+
conf.log_level = :info
|
85
|
+
end
|
86
|
+
|
87
|
+
log1.info "Going to STDOUT."
|
88
|
+
log2.info "Going to a file called 'log_output.log' in the current directory."
|
89
|
+
```
|
90
|
+
|
91
|
+
### Modifying logs after creation
|
92
|
+
|
93
|
+
You can access and modify the configuration of a log after its creation simply
|
94
|
+
by modifying its `config` object:
|
95
|
+
|
96
|
+
``` ruby
|
97
|
+
require 'better-logger'
|
98
|
+
|
99
|
+
Better::Logger.config do |conf|
|
100
|
+
conf.color = true
|
101
|
+
conf.log_to = "log_output.log"
|
102
|
+
conf.error_to = "log_error.log"
|
103
|
+
conf.log_level = :info
|
104
|
+
end
|
105
|
+
|
106
|
+
log.info "Logging to a file called 'log_output.log'"
|
107
|
+
|
108
|
+
log.config.log_to = STDOUT
|
109
|
+
|
110
|
+
log.info "Logging to STDOUT."
|
111
|
+
```
|
112
|
+
|
113
|
+
## Contributing
|
114
|
+
|
115
|
+
1. Fork it
|
116
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
117
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
118
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
119
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'better-logger/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |gem|
|
7
|
+
gem.name = "better-logger"
|
8
|
+
gem.version = Better::Logger::VERSION
|
9
|
+
gem.authors = ["Sam Rose"]
|
10
|
+
gem.email = ["samwho@lbak.co.uk"]
|
11
|
+
gem.description = %q{A better logging default for Ruby.}
|
12
|
+
gem.summary = %q{A little tired of unconventional logging techniques in projects, this gem aims to introduce a logging convention.}
|
13
|
+
gem.homepage = ""
|
14
|
+
|
15
|
+
gem.files = `git ls-files`.split($/)
|
16
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
17
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
|
+
gem.require_paths = ["lib"]
|
19
|
+
|
20
|
+
# Dependencies
|
21
|
+
gem.add_development_dependency "rspec"
|
22
|
+
gem.add_dependency "colored"
|
23
|
+
end
|
data/examples/config.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
require_relative '../lib/better-logger'
|
2
|
+
|
3
|
+
Better::Logger.config do |conf|
|
4
|
+
conf.color = true
|
5
|
+
conf.log_to = STDOUT
|
6
|
+
conf.error_to = STDERR
|
7
|
+
conf.log_level = :debug
|
8
|
+
end
|
9
|
+
|
10
|
+
class Foo
|
11
|
+
def bar
|
12
|
+
log.debug "Yes"
|
13
|
+
log.info "Np"
|
14
|
+
log.warn "Oops!"
|
15
|
+
log.error "Test"
|
16
|
+
log.fatal "wat"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
Foo.new.bar
|
21
|
+
|
22
|
+
log.info "Done."
|
data/examples/include.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
lib = File.dirname(__FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
|
4
|
+
def require_all path
|
5
|
+
Dir[File.join(File.dirname(__FILE__), path, '*.rb')].each { |f| require f }
|
6
|
+
end
|
7
|
+
|
8
|
+
require 'colored'
|
9
|
+
|
10
|
+
require 'better-logger/base'
|
11
|
+
require_all 'better-logger'
|
12
|
+
|
13
|
+
# Make the logging methods available from everywhere
|
14
|
+
include Better::Logger::Loggers
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Better
|
2
|
+
module Logger
|
3
|
+
LEVELS = {
|
4
|
+
debug: 0,
|
5
|
+
info: 1,
|
6
|
+
warn: 2,
|
7
|
+
error: 3,
|
8
|
+
fatal: 4,
|
9
|
+
silent: 100,
|
10
|
+
}
|
11
|
+
|
12
|
+
def self.config log_name = :log, &block
|
13
|
+
conf_object = Config.new
|
14
|
+
yield conf_object
|
15
|
+
|
16
|
+
# The "Loggers" module gets included into the main namespace when
|
17
|
+
# better-logger is required. By defining a method in it, we define a
|
18
|
+
# method in the main namespace. This allows the loggers to be accessed
|
19
|
+
# from anywhere.
|
20
|
+
Loggers._log_hash[log_name] = Logger.new(conf_object)
|
21
|
+
Loggers.send :define_method, log_name do
|
22
|
+
Loggers._log_hash[log_name]
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
module Better
|
2
|
+
module Logger
|
3
|
+
class Config
|
4
|
+
attr_writer :color, :formatter, :datetime_format, :log_level, :time_format
|
5
|
+
|
6
|
+
def color
|
7
|
+
@color = true if @color.nil?
|
8
|
+
@color
|
9
|
+
end
|
10
|
+
|
11
|
+
def color?
|
12
|
+
color
|
13
|
+
end
|
14
|
+
|
15
|
+
def log_to
|
16
|
+
@log_to ||= STDOUT
|
17
|
+
end
|
18
|
+
|
19
|
+
def log_to= new_log_to
|
20
|
+
if new_log_to.is_a? String
|
21
|
+
@log_to = File.open(new_log_to, 'a')
|
22
|
+
else
|
23
|
+
@log_to = new_log_to
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def error_to
|
28
|
+
@error_to ||= STDERR
|
29
|
+
end
|
30
|
+
|
31
|
+
def error_to= new_error_to
|
32
|
+
if new_error_to.is_a? String
|
33
|
+
@error_to = File.open(new_error_to, 'a')
|
34
|
+
else
|
35
|
+
@error_to = new_error_to
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def log_level
|
40
|
+
@log_level ||= :info
|
41
|
+
end
|
42
|
+
|
43
|
+
def time_format
|
44
|
+
@time_format ||= "%Y/%m/%d %H:%M:%S"
|
45
|
+
end
|
46
|
+
|
47
|
+
def formatter
|
48
|
+
@formatter ||= lambda do |message, level|
|
49
|
+
_level = level.to_s.ljust(5)
|
50
|
+
_time = Time.now.strftime(config.time_format)
|
51
|
+
|
52
|
+
if config.color?
|
53
|
+
case level
|
54
|
+
when :debug
|
55
|
+
_level = _level.magenta
|
56
|
+
when :info
|
57
|
+
_level = _level.cyan
|
58
|
+
when :warn
|
59
|
+
_level = _level.yellow
|
60
|
+
when :error
|
61
|
+
_level = _level.red
|
62
|
+
when :fatal
|
63
|
+
_level = _level.red
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
"[#{_time}][#{_level}][#{caller[3]}] #{message}"
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Better
|
2
|
+
module Logger
|
3
|
+
class Logger
|
4
|
+
attr_accessor :config
|
5
|
+
|
6
|
+
def initialize config
|
7
|
+
@config = config
|
8
|
+
end
|
9
|
+
|
10
|
+
def debug msg; _log config.log_to, __method__, msg; end;
|
11
|
+
def info msg; _log config.log_to, __method__, msg; end;
|
12
|
+
def warn msg; _log config.log_to, __method__, msg; end;
|
13
|
+
def error msg; _log config.error_to, __method__, msg; end;
|
14
|
+
def fatal msg; _log config.error_to, __method__, msg; end;
|
15
|
+
|
16
|
+
# Pseudo-private methods
|
17
|
+
|
18
|
+
def _format msg, level = config.log_level
|
19
|
+
if config.formatter
|
20
|
+
instance_exec msg, level.to_sym, &config.formatter
|
21
|
+
else
|
22
|
+
msg
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def _should_log? level
|
27
|
+
# :info <= :debug
|
28
|
+
# 1 <= 0
|
29
|
+
LEVELS[config.log_level] <= LEVELS[level.to_sym]
|
30
|
+
end
|
31
|
+
|
32
|
+
def _log io, level, msg
|
33
|
+
io.puts _format(msg, level) if _should_log? level
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
data/spec/logger_spec.rb
ADDED
@@ -0,0 +1,191 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Better::Logger do
|
4
|
+
let(:fake_stdout) { Tempfile.new 'fake_stdout' }
|
5
|
+
let(:fake_stderr) { Tempfile.new 'fake_stderr' }
|
6
|
+
let(:fake_stdout_content) { fake_stdout.rewind; fake_stdout.read }
|
7
|
+
let(:fake_stderr_content) { fake_stderr.rewind; fake_stderr.read }
|
8
|
+
|
9
|
+
before :each do
|
10
|
+
Better::Logger.config :log do |conf|
|
11
|
+
conf.color = false
|
12
|
+
conf.log_to = fake_stdout
|
13
|
+
conf.error_to = fake_stderr
|
14
|
+
conf.log_level = :debug
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
after :each do
|
19
|
+
fake_stdout.close; fake_stdout.unlink
|
20
|
+
fake_stderr.close; fake_stderr.unlink
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "log#info" do
|
24
|
+
subject { fake_stdout_content }
|
25
|
+
before { log.info "Testing!" }
|
26
|
+
it { should include "Testing!" }
|
27
|
+
it { should include "[info ]" }
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "log#info multiple calls" do
|
31
|
+
subject { fake_stdout_content }
|
32
|
+
|
33
|
+
before do
|
34
|
+
log.info "Info test!"
|
35
|
+
log.info "Info test 2!"
|
36
|
+
end
|
37
|
+
|
38
|
+
it { should include "Info test!" }
|
39
|
+
it { should include "Info test 2!" }
|
40
|
+
end
|
41
|
+
|
42
|
+
describe "log#error" do
|
43
|
+
subject { fake_stderr_content }
|
44
|
+
before { log.error "error test!" }
|
45
|
+
it { should include "error test!" }
|
46
|
+
it { should include "[error]" }
|
47
|
+
end
|
48
|
+
|
49
|
+
describe "log#error multiple calls" do
|
50
|
+
subject { fake_stderr_content }
|
51
|
+
|
52
|
+
before do
|
53
|
+
log.error "error test!"
|
54
|
+
log.error "error test 2!"
|
55
|
+
end
|
56
|
+
|
57
|
+
it { should include "error test!" }
|
58
|
+
it { should include "error test 2!" }
|
59
|
+
end
|
60
|
+
|
61
|
+
describe "log#debug" do
|
62
|
+
subject { fake_stdout_content }
|
63
|
+
before { log.debug "debug test!" }
|
64
|
+
it { should include "debug test!" }
|
65
|
+
it { should include "[debug]" }
|
66
|
+
end
|
67
|
+
|
68
|
+
describe "log#debug multiple calls" do
|
69
|
+
subject { fake_stderr_content }
|
70
|
+
|
71
|
+
before do
|
72
|
+
log.error "debug test!"
|
73
|
+
log.error "debug test 2!"
|
74
|
+
end
|
75
|
+
|
76
|
+
it { should include "debug test!" }
|
77
|
+
it { should include "debug test 2!" }
|
78
|
+
end
|
79
|
+
|
80
|
+
describe "With color" do
|
81
|
+
before :each do
|
82
|
+
Better::Logger.config :log do |conf|
|
83
|
+
conf.color = true
|
84
|
+
conf.log_to = fake_stdout
|
85
|
+
conf.error_to = fake_stderr
|
86
|
+
conf.log_level = :debug
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
describe "log#fatal" do
|
91
|
+
subject { fake_stderr_content }
|
92
|
+
before { log.fatal "fatal test!" }
|
93
|
+
it { should include "fatal test!" }
|
94
|
+
it { should include "[#{"fatal".red}]" }
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
describe "With a different formatter" do
|
99
|
+
before :each do
|
100
|
+
Better::Logger.config :log do |conf|
|
101
|
+
conf.color = true
|
102
|
+
conf.log_to = fake_stdout
|
103
|
+
conf.error_to = fake_stderr
|
104
|
+
conf.log_level = :debug
|
105
|
+
|
106
|
+
conf.formatter = lambda do |message, level|
|
107
|
+
"#{level.upcase} #{message.upcase}"
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
describe "log#warn" do
|
113
|
+
subject { fake_stdout_content }
|
114
|
+
before { log.warn "warn test!" }
|
115
|
+
it { should == "WARN WARN TEST!\n" }
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
describe "Non-default logging method" do
|
120
|
+
before :each do
|
121
|
+
Better::Logger.config :testlog do |conf|
|
122
|
+
conf.color = true
|
123
|
+
conf.log_to = fake_stdout
|
124
|
+
conf.error_to = fake_stderr
|
125
|
+
conf.log_level = :debug
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
describe "testlog#info" do
|
130
|
+
subject { fake_stdout_content }
|
131
|
+
before { testlog.info "testlog!" }
|
132
|
+
it { should include "testlog!" }
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
describe "Slightly raised log level" do
|
137
|
+
before :each do
|
138
|
+
Better::Logger.config :testlog do |conf|
|
139
|
+
conf.color = true
|
140
|
+
conf.log_to = fake_stdout
|
141
|
+
conf.error_to = fake_stderr
|
142
|
+
conf.log_level = :info
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
describe "log#debug" do
|
147
|
+
subject { fake_stdout_content }
|
148
|
+
before { testlog.debug "I shouldn't be in the output." }
|
149
|
+
it { should be_empty }
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
describe "Silent flag" do
|
154
|
+
before :each do
|
155
|
+
Better::Logger.config :log do |conf|
|
156
|
+
conf.color = true
|
157
|
+
conf.log_to = fake_stdout
|
158
|
+
conf.error_to = fake_stderr
|
159
|
+
conf.log_level = :silent
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
163
|
+
describe "log#fatal" do
|
164
|
+
subject { fake_stderr_content }
|
165
|
+
before { log.fatal "Should not be output." }
|
166
|
+
it { should be_empty }
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
describe "Modifying log after creation" do
|
171
|
+
before :each do
|
172
|
+
Better::Logger.config :log do |conf|
|
173
|
+
conf.color = true
|
174
|
+
conf.log_to = fake_stdout
|
175
|
+
conf.error_to = fake_stderr
|
176
|
+
conf.log_level = :info
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
180
|
+
describe "log#info after log_to changed to fake_stderr" do
|
181
|
+
subject { fake_stderr_content }
|
182
|
+
|
183
|
+
before do
|
184
|
+
log.config.log_to = fake_stderr
|
185
|
+
log.info "Testing!"
|
186
|
+
end
|
187
|
+
|
188
|
+
it { should include "Testing!" }
|
189
|
+
end
|
190
|
+
end
|
191
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,97 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: better-logger
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Sam Rose
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-12-25 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rspec
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: colored
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
description: A better logging default for Ruby.
|
47
|
+
email:
|
48
|
+
- samwho@lbak.co.uk
|
49
|
+
executables: []
|
50
|
+
extensions: []
|
51
|
+
extra_rdoc_files: []
|
52
|
+
files:
|
53
|
+
- .gitignore
|
54
|
+
- Gemfile
|
55
|
+
- LICENSE.txt
|
56
|
+
- README.md
|
57
|
+
- Rakefile
|
58
|
+
- better-logger.gemspec
|
59
|
+
- examples/config.rb
|
60
|
+
- examples/include.rb
|
61
|
+
- lib/better-logger.rb
|
62
|
+
- lib/better-logger/base.rb
|
63
|
+
- lib/better-logger/config.rb
|
64
|
+
- lib/better-logger/logger.rb
|
65
|
+
- lib/better-logger/loggers.rb
|
66
|
+
- lib/better-logger/version.rb
|
67
|
+
- spec/logger_spec.rb
|
68
|
+
- spec/spec_helper.rb
|
69
|
+
homepage: ''
|
70
|
+
licenses: []
|
71
|
+
post_install_message:
|
72
|
+
rdoc_options: []
|
73
|
+
require_paths:
|
74
|
+
- lib
|
75
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
76
|
+
none: false
|
77
|
+
requirements:
|
78
|
+
- - ! '>='
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '0'
|
81
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
82
|
+
none: false
|
83
|
+
requirements:
|
84
|
+
- - ! '>='
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '0'
|
87
|
+
requirements: []
|
88
|
+
rubyforge_project:
|
89
|
+
rubygems_version: 1.8.24
|
90
|
+
signing_key:
|
91
|
+
specification_version: 3
|
92
|
+
summary: A little tired of unconventional logging techniques in projects, this gem
|
93
|
+
aims to introduce a logging convention.
|
94
|
+
test_files:
|
95
|
+
- spec/logger_spec.rb
|
96
|
+
- spec/spec_helper.rb
|
97
|
+
has_rdoc:
|