hatchet 0.0.17 → 0.0.18
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/README.md +141 -0
- data/RELEASE.md +16 -0
- data/lib/hatchet/configuration.rb +5 -5
- data/lib/hatchet/hatchet_logger.rb +11 -2
- data/lib/hatchet/version.rb +1 -1
- data/spec/configuration_spec.rb +6 -0
- metadata +4 -8
data/README.md
ADDED
@@ -0,0 +1,141 @@
|
|
1
|
+
# Hatchet
|
2
|
+
|
3
|
+
Ruby logging library that provides the ability to add class/module specific
|
4
|
+
filters.
|
5
|
+
|
6
|
+
This README provides a brief overview of Hatchet, [see the main site for more complete documentation and tutorials](http://gshutler.github.com/hatchet/).
|
7
|
+
|
8
|
+
[](http://travis-ci.org/gshutler/hatchet)
|
9
|
+
|
10
|
+
## Installation
|
11
|
+
|
12
|
+
Add this line to your application's Gemfile:
|
13
|
+
|
14
|
+
```ruby
|
15
|
+
gem 'hatchet'
|
16
|
+
```
|
17
|
+
|
18
|
+
And then execute:
|
19
|
+
|
20
|
+
```
|
21
|
+
$ bundle
|
22
|
+
```
|
23
|
+
|
24
|
+
Or install it yourself as:
|
25
|
+
|
26
|
+
```
|
27
|
+
$ gem install hatchet
|
28
|
+
```
|
29
|
+
|
30
|
+
## Usage
|
31
|
+
|
32
|
+
### Logging
|
33
|
+
|
34
|
+
To use the logger you must add it to your classes as a mixin or use it to extend
|
35
|
+
your modules. Then you can call the logger through the methods `log` and
|
36
|
+
`logger`. They are aliases for the same method to ease migration.
|
37
|
+
|
38
|
+
#### Classes
|
39
|
+
|
40
|
+
```ruby
|
41
|
+
class Foo
|
42
|
+
include Hatchet
|
43
|
+
|
44
|
+
def self.class_work
|
45
|
+
log.info { 'Doing some class work' }
|
46
|
+
end
|
47
|
+
|
48
|
+
def work
|
49
|
+
log.info { 'Doing some work' }
|
50
|
+
end
|
51
|
+
|
52
|
+
def dangerous_work
|
53
|
+
log.info { 'Attempting dangerous work' }
|
54
|
+
attempt_dangerous_work
|
55
|
+
log.info { 'Dangerous work complete' }
|
56
|
+
true
|
57
|
+
rescue => e
|
58
|
+
log.error "Dangerous work failed - #{e.message}", e
|
59
|
+
false
|
60
|
+
end
|
61
|
+
end
|
62
|
+
```
|
63
|
+
|
64
|
+
#### Modules
|
65
|
+
|
66
|
+
```ruby
|
67
|
+
module Bar
|
68
|
+
include Hatchet
|
69
|
+
|
70
|
+
def self.work
|
71
|
+
log.info { 'Doing some module work' }
|
72
|
+
end
|
73
|
+
|
74
|
+
def work
|
75
|
+
log.info { 'Doing some mixin work' }
|
76
|
+
end
|
77
|
+
end
|
78
|
+
```
|
79
|
+
|
80
|
+
### Configuration
|
81
|
+
|
82
|
+
#### Standard
|
83
|
+
|
84
|
+
```ruby
|
85
|
+
Hatchet.configure do |config|
|
86
|
+
# Set the level to use unless overridden (defaults to :info)
|
87
|
+
config.level :info
|
88
|
+
# Set the level for a specific class/module and its children
|
89
|
+
config.level :debug, 'Namespace::Something::Nested'
|
90
|
+
|
91
|
+
# Add as many appenders as you like
|
92
|
+
config.appenders << Hatchet::LoggerAppender.new do |appender|
|
93
|
+
# Set the logger that this is wrapping (required)
|
94
|
+
appender.logger = Logger.new('log/test.log')
|
95
|
+
end
|
96
|
+
end
|
97
|
+
```
|
98
|
+
|
99
|
+
#### Sinatra
|
100
|
+
|
101
|
+
Use the standard configuration method but also register Hatchet as a helper
|
102
|
+
where appropriate:
|
103
|
+
|
104
|
+
```ruby
|
105
|
+
register Hatchet
|
106
|
+
```
|
107
|
+
|
108
|
+
Note that you may have to use the `log` alias as Sinatra already has a `logger`
|
109
|
+
method.
|
110
|
+
|
111
|
+
#### Rails
|
112
|
+
|
113
|
+
Hatchet includes a Railtie that is loaded automatically and wraps the
|
114
|
+
`Rails.logger`. The Hatchet configuration object is available through
|
115
|
+
`config.hatchet` within your standard configuration files for fine-tuning your
|
116
|
+
Hatchet configuration.
|
117
|
+
|
118
|
+
To make it so your log calls are scoped to your controllers you also need to add
|
119
|
+
Hatchet to your `ApplicationController`:
|
120
|
+
|
121
|
+
```ruby
|
122
|
+
class ApplicationController < ActionController::Base
|
123
|
+
include Hatchet
|
124
|
+
end
|
125
|
+
```
|
126
|
+
|
127
|
+
You could include it in your models so that each of those has its own logging
|
128
|
+
context too.
|
129
|
+
|
130
|
+
## Contributing
|
131
|
+
|
132
|
+
1. Fork it
|
133
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
134
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
135
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
136
|
+
5. Create new Pull Request
|
137
|
+
|
138
|
+
All pull requests should come complete with tests when appropriate and should
|
139
|
+
follow the existing style which is best described in
|
140
|
+
[Github's Ruby style guide](https://github.com/styleguide/ruby/).
|
141
|
+
|
data/RELEASE.md
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
# Release notes
|
2
|
+
|
3
|
+
## 0.0.18
|
4
|
+
|
5
|
+
* Made the presence of a `formatter=` method on appenders optional
|
6
|
+
|
7
|
+
## 0.0.17
|
8
|
+
|
9
|
+
* Added the ability to pass an error along with your message
|
10
|
+
|
11
|
+
### Bug fixes
|
12
|
+
|
13
|
+
* Fixed the fallback logging if an appender raises an error whilst trying to
|
14
|
+
log a message
|
15
|
+
* Ensured all logging calls truly do return `nil` rather than it just being
|
16
|
+
part of the documented contract
|
@@ -58,9 +58,9 @@ module Hatchet
|
|
58
58
|
# used to setup Hatchet.
|
59
59
|
#
|
60
60
|
# Once the block returns each of the configured appenders has its formatter
|
61
|
-
# set to the default formatter if one is not already set,
|
62
|
-
# Hash is set to the shared levels Hash if an explicit one
|
63
|
-
# provided.
|
61
|
+
# set to the default formatter if they have one and one is not already set,
|
62
|
+
# and its levels Hash is set to the shared levels Hash if an explicit one
|
63
|
+
# has not been provided.
|
64
64
|
#
|
65
65
|
# Example
|
66
66
|
#
|
@@ -85,8 +85,8 @@ module Hatchet
|
|
85
85
|
# Ensure every appender has a formatter and a level configuration.
|
86
86
|
#
|
87
87
|
appenders.each do |appender|
|
88
|
-
appender.formatter ||= @formatter
|
89
|
-
appender.levels = @levels
|
88
|
+
appender.formatter ||= @formatter if appender.respond_to? 'formatter='
|
89
|
+
appender.levels = @levels if appender.levels.empty?
|
90
90
|
end
|
91
91
|
end
|
92
92
|
|
@@ -20,8 +20,17 @@ module Hatchet
|
|
20
20
|
#
|
21
21
|
# Examples
|
22
22
|
#
|
23
|
-
#
|
24
|
-
#
|
23
|
+
# log.info "Informational message"
|
24
|
+
# log.info { "Informational message #{potentially_expensive}" }
|
25
|
+
#
|
26
|
+
# It is also possible to pass an error to associate with a message. It is down
|
27
|
+
# to the appender what it will do with the error (such as including the stack
|
28
|
+
# trace) so it is recommended you still include basic information within the
|
29
|
+
# message you pass.
|
30
|
+
#
|
31
|
+
# Examples
|
32
|
+
#
|
33
|
+
# log.error "Something bad happened - #{error.message}", error
|
25
34
|
#
|
26
35
|
# Log messages are sent to each appender where they will be filtered and
|
27
36
|
# invoked as configured.
|
data/lib/hatchet/version.rb
CHANGED
data/spec/configuration_spec.rb
CHANGED
@@ -12,11 +12,17 @@ describe 'configuration' do
|
|
12
12
|
describe 'appender defaults' do
|
13
13
|
let(:set_levels) { { unique: :fake_level } }
|
14
14
|
let(:appender) { StoringAppender.new }
|
15
|
+
let(:unformatted_appender) do
|
16
|
+
obj = Object.new
|
17
|
+
obj.extend Hatchet::LevelManager
|
18
|
+
obj
|
19
|
+
end
|
15
20
|
|
16
21
|
before do
|
17
22
|
Hatchet.configure do |config|
|
18
23
|
config.levels = set_levels
|
19
24
|
config.appenders << appender
|
25
|
+
config.appenders << unformatted_appender
|
20
26
|
end
|
21
27
|
end
|
22
28
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hatchet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.18
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -47,7 +47,9 @@ files:
|
|
47
47
|
- spec/spec_helper.rb
|
48
48
|
- spec/standard_formatter_spec.rb
|
49
49
|
- LICENSE
|
50
|
-
|
50
|
+
- README.md
|
51
|
+
- RELEASE.md
|
52
|
+
homepage: http://gshutler.github.com/hatchet/
|
51
53
|
licenses: []
|
52
54
|
post_install_message:
|
53
55
|
rdoc_options: []
|
@@ -59,18 +61,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
59
61
|
- - ! '>='
|
60
62
|
- !ruby/object:Gem::Version
|
61
63
|
version: '0'
|
62
|
-
segments:
|
63
|
-
- 0
|
64
|
-
hash: -2041677748427944104
|
65
64
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
66
65
|
none: false
|
67
66
|
requirements:
|
68
67
|
- - ! '>='
|
69
68
|
- !ruby/object:Gem::Version
|
70
69
|
version: '0'
|
71
|
-
segments:
|
72
|
-
- 0
|
73
|
-
hash: -2041677748427944104
|
74
70
|
requirements: []
|
75
71
|
rubyforge_project:
|
76
72
|
rubygems_version: 1.8.17
|