hatchet 0.0.6 → 0.0.7
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/hatchet.rb +16 -9
- data/lib/hatchet/configuration.rb +6 -0
- data/lib/hatchet/railtie.rb +87 -0
- data/lib/hatchet/standard_formatter.rb +1 -1
- data/lib/hatchet/version.rb +1 -1
- data/spec/configuration_spec.rb +7 -1
- metadata +3 -2
data/lib/hatchet.rb
CHANGED
@@ -130,12 +130,11 @@ module Hatchet
|
|
130
130
|
#
|
131
131
|
# Returns nothing.
|
132
132
|
def self.configure
|
133
|
-
|
134
|
-
yield @@config
|
133
|
+
yield configuration
|
135
134
|
default_formatter = StandardFormatter.new
|
136
|
-
|
135
|
+
configuration.appenders.each do |appender|
|
137
136
|
appender.formatter ||= default_formatter
|
138
|
-
appender.levels =
|
137
|
+
appender.levels = configuration.levels if appender.levels.empty?
|
139
138
|
end
|
140
139
|
end
|
141
140
|
|
@@ -153,12 +152,20 @@ module Hatchet
|
|
153
152
|
# Internal: Returns the Array of configured appenders.
|
154
153
|
#
|
155
154
|
def self.appenders
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
155
|
+
configuration.appenders
|
156
|
+
end
|
157
|
+
|
158
|
+
private
|
159
|
+
|
160
|
+
# Private: Returns the configuration object, initializing it when necessary.
|
161
|
+
#
|
162
|
+
def self.configuration
|
163
|
+
@config ||= Configuration.new
|
161
164
|
end
|
162
165
|
|
163
166
|
end
|
164
167
|
|
168
|
+
# If we are running in a Rails environment include the Hatchet::Railtie class.
|
169
|
+
#
|
170
|
+
require_relative 'hatchet/railtie' if defined?(Rails)
|
171
|
+
|
@@ -16,6 +16,12 @@ module Hatchet
|
|
16
16
|
# Creates the levels Hash with a default logging level of info.
|
17
17
|
#
|
18
18
|
def initialize
|
19
|
+
reset!
|
20
|
+
end
|
21
|
+
|
22
|
+
# Public: Resets the configuration's internal state to the defaults.
|
23
|
+
#
|
24
|
+
def reset!
|
19
25
|
@levels = { nil => :info }
|
20
26
|
@appenders = []
|
21
27
|
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
module Hatchet
|
4
|
+
|
5
|
+
# Public: Railtie to hook Hatchet into Rails.
|
6
|
+
#
|
7
|
+
# Wraps the default Rails.logger, Rails.application.assets.logger, and all log
|
8
|
+
# subscribers found in ActiveSupport::LogSubscriber.log_subscribers
|
9
|
+
# collection.
|
10
|
+
#
|
11
|
+
class Railtie < Rails::Railtie
|
12
|
+
|
13
|
+
# Expose Hatchet's configuration object to consumers through the Rails
|
14
|
+
# config object.
|
15
|
+
#
|
16
|
+
Hatchet.configure do |config|
|
17
|
+
self.config.hatchet = config
|
18
|
+
end
|
19
|
+
|
20
|
+
# Wrap the default Rails.logger, Rails.application.assets.logger, and all
|
21
|
+
# log subscribers found in ActiveSupport::LogSubscriber.log_subscribers
|
22
|
+
# collection on initialization.
|
23
|
+
#
|
24
|
+
initializer 'hatchet_railtie.replace_logger' do |app|
|
25
|
+
|
26
|
+
# Keep a handle to the original logger.
|
27
|
+
#
|
28
|
+
logger = Rails.logger
|
29
|
+
|
30
|
+
# Add an appender that delegates to the current Rails.logger to Hatchet's
|
31
|
+
# configuration.
|
32
|
+
#
|
33
|
+
Hatchet.configure do |config|
|
34
|
+
config.appenders << Hatchet::LoggerAppender.new(logger: logger)
|
35
|
+
end
|
36
|
+
|
37
|
+
# Extend the application with Hatchet.
|
38
|
+
#
|
39
|
+
app.extend Hatchet
|
40
|
+
|
41
|
+
begin
|
42
|
+
# Replace the Rails.logger with the application's Hatchet logger.
|
43
|
+
#
|
44
|
+
logger.debug 'Replacing Rails logger with Hatchet'
|
45
|
+
Rails.logger = app.logger
|
46
|
+
|
47
|
+
# Replace the logger of every subscriber in the
|
48
|
+
# ActiveSupport::LogSubscriber.log_subscribers collection by extending
|
49
|
+
#
|
50
|
+
ActiveSupport::LogSubscriber.log_subscribers.each do |subscriber|
|
51
|
+
logger.debug "Replacing #{subscriber.class} logger with Hatchet"
|
52
|
+
subscriber.extend Hatchet
|
53
|
+
end
|
54
|
+
|
55
|
+
# Replace the Rails.application.assets.logger with a logger that lives
|
56
|
+
# in a module beneath the application. This allows you to target the
|
57
|
+
# asset logger messages directly when managing levels.
|
58
|
+
#
|
59
|
+
# As you can guess by the description this is probably the riskiest so
|
60
|
+
# we do it last.
|
61
|
+
#
|
62
|
+
logger.debug 'Replacing Rails asset logger with Hatchet'
|
63
|
+
|
64
|
+
# Initially replace it with the application logger as it's better for
|
65
|
+
# this to be done if the next part fails.
|
66
|
+
#
|
67
|
+
Rails.application.assets.logger = app.logger
|
68
|
+
|
69
|
+
# Create the <Application>::Assets module and extend it with Hatchet so
|
70
|
+
# that it can replace the assets logger.
|
71
|
+
#
|
72
|
+
assets = Module.new
|
73
|
+
app.class.const_set 'Assets', assets
|
74
|
+
assets.extend Hatchet
|
75
|
+
Rails.application.assets.logger = assets.logger
|
76
|
+
|
77
|
+
rescue
|
78
|
+
# If anything goes wrong along the way log it and let the application
|
79
|
+
# continue.
|
80
|
+
#
|
81
|
+
logger.error 'Failed to replace logger with Hatchet'
|
82
|
+
logger.error $!
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
end
|
data/lib/hatchet/version.rb
CHANGED
data/spec/configuration_spec.rb
CHANGED
@@ -3,6 +3,12 @@
|
|
3
3
|
require_relative 'spec_helper'
|
4
4
|
|
5
5
|
describe 'configuration' do
|
6
|
+
before do
|
7
|
+
Hatchet.configure do |config|
|
8
|
+
config.reset!
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
6
12
|
describe 'appender defaults' do
|
7
13
|
let(:set_levels) { { unique: :fake_level } }
|
8
14
|
let(:appender) { StoringAppender.new }
|
@@ -51,7 +57,7 @@ describe 'configuration' do
|
|
51
57
|
end
|
52
58
|
|
53
59
|
describe 'global default level' do
|
54
|
-
let(:appender)
|
60
|
+
let(:appender) { StoringAppender.new }
|
55
61
|
|
56
62
|
before do
|
57
63
|
Hatchet.configure do |config|
|
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.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-07-
|
12
|
+
date: 2012-07-15 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Logging library that provides the ability to add class/module specific
|
15
15
|
filters
|
@@ -24,6 +24,7 @@ files:
|
|
24
24
|
- lib/hatchet/level_manager.rb
|
25
25
|
- lib/hatchet/logger_appender.rb
|
26
26
|
- lib/hatchet/message.rb
|
27
|
+
- lib/hatchet/railtie.rb
|
27
28
|
- lib/hatchet/standard_formatter.rb
|
28
29
|
- lib/hatchet/version.rb
|
29
30
|
- lib/hatchet.rb
|