hatchet 0.0.5 → 0.0.6
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 +42 -15
- data/lib/hatchet/hatchet_logger.rb +18 -4
- data/lib/hatchet/logger_appender.rb +1 -1
- data/lib/hatchet/standard_formatter.rb +19 -1
- data/lib/hatchet/version.rb +1 -1
- data/spec/standard_formatter_spec.rb +14 -0
- metadata +3 -3
data/lib/hatchet.rb
CHANGED
@@ -20,9 +20,9 @@ require_relative 'hatchet/version'
|
|
20
20
|
#
|
21
21
|
module Hatchet
|
22
22
|
|
23
|
-
# Public: Returns a
|
23
|
+
# Public: Returns a HatchetLogger for the object.
|
24
24
|
#
|
25
|
-
# The
|
25
|
+
# The logger has 5 logging methods. Those are, in decreasing order of
|
26
26
|
# severity:
|
27
27
|
#
|
28
28
|
# * fatal
|
@@ -31,8 +31,8 @@ module Hatchet
|
|
31
31
|
# * info
|
32
32
|
# * debug
|
33
33
|
#
|
34
|
-
# All
|
35
|
-
# a direct string, or as a block to the method is lazily evaluated (this is
|
34
|
+
# All these methods have the same signature. You can either provide a message
|
35
|
+
# as a direct string, or as a block to the method is lazily evaluated (this is
|
36
36
|
# the recommended option).
|
37
37
|
#
|
38
38
|
# Examples
|
@@ -40,18 +40,31 @@ module Hatchet
|
|
40
40
|
# logger.info "Informational message"
|
41
41
|
# logger.info { "Informational message #{potentially_expensive}" }
|
42
42
|
#
|
43
|
-
# Log messages are sent to appender where they will be filtered and
|
44
|
-
# configured.
|
43
|
+
# Log messages are sent to each appender where they will be filtered and
|
44
|
+
# invoked as configured.
|
45
45
|
#
|
46
|
-
#
|
46
|
+
# The logger also has 5 inspection methods. Those are, in decreasing order of
|
47
|
+
# severity:
|
48
|
+
#
|
49
|
+
# * fatal?
|
50
|
+
# * error?
|
51
|
+
# * warn?
|
52
|
+
# * info?
|
53
|
+
# * debug?
|
54
|
+
#
|
55
|
+
# All these methods take no arguments and return true if any of the loggers'
|
56
|
+
# appenders will log a message at that level for the current context,
|
57
|
+
# otherwise they will return false.
|
58
|
+
#
|
59
|
+
# Returns a HatchetLogger for the object.
|
47
60
|
#
|
48
61
|
def logger
|
49
62
|
@_hatchet_logger ||= HatchetLogger.new self, Hatchet.appenders
|
50
63
|
end
|
51
64
|
|
52
|
-
# Public: Returns a
|
65
|
+
# Public: Returns a HatchetLogger for the object.
|
53
66
|
#
|
54
|
-
# The
|
67
|
+
# The logger has 5 logging methods. Those are, in decreasing order of
|
55
68
|
# severity:
|
56
69
|
#
|
57
70
|
# * fatal
|
@@ -60,8 +73,8 @@ module Hatchet
|
|
60
73
|
# * info
|
61
74
|
# * debug
|
62
75
|
#
|
63
|
-
# All
|
64
|
-
# a direct string, or as a block to the method is lazily evaluated (this is
|
76
|
+
# All these methods have the same signature. You can either provide a message
|
77
|
+
# as a direct string, or as a block to the method is lazily evaluated (this is
|
65
78
|
# the recommended option).
|
66
79
|
#
|
67
80
|
# Examples
|
@@ -69,10 +82,23 @@ module Hatchet
|
|
69
82
|
# log.info "Informational message"
|
70
83
|
# log.info { "Informational message #{potentially_expensive}" }
|
71
84
|
#
|
72
|
-
# Log messages are sent to appender where they will be filtered and
|
73
|
-
# configured.
|
85
|
+
# Log messages are sent to each appender where they will be filtered and
|
86
|
+
# invoked as configured.
|
87
|
+
#
|
88
|
+
# The logger also has 5 inspection methods. Those are, in decreasing order of
|
89
|
+
# severity:
|
90
|
+
#
|
91
|
+
# * fatal?
|
92
|
+
# * error?
|
93
|
+
# * warn?
|
94
|
+
# * info?
|
95
|
+
# * debug?
|
96
|
+
#
|
97
|
+
# All these methods take no arguments and return true if any of the loggers'
|
98
|
+
# appenders will log a message at that level for the current context,
|
99
|
+
# otherwise they will return false.
|
74
100
|
#
|
75
|
-
# Returns a
|
101
|
+
# Returns a HatchetLogger for the object.
|
76
102
|
#
|
77
103
|
alias_method :log, :logger
|
78
104
|
|
@@ -106,8 +132,9 @@ module Hatchet
|
|
106
132
|
def self.configure
|
107
133
|
@@config = Configuration.new
|
108
134
|
yield @@config
|
135
|
+
default_formatter = StandardFormatter.new
|
109
136
|
@@config.appenders.each do |appender|
|
110
|
-
appender.formatter ||=
|
137
|
+
appender.formatter ||= default_formatter
|
111
138
|
appender.levels = @@config.levels if appender.levels.empty?
|
112
139
|
end
|
113
140
|
end
|
@@ -2,10 +2,11 @@
|
|
2
2
|
|
3
3
|
module Hatchet
|
4
4
|
|
5
|
-
#
|
5
|
+
# Public: Class that handles logging calls and distributes them to all its
|
6
6
|
# appenders.
|
7
7
|
#
|
8
|
-
# Each logger has 5 methods. Those are, in decreasing order of
|
8
|
+
# Each logger has 5 logging methods. Those are, in decreasing order of
|
9
|
+
# severity:
|
9
10
|
#
|
10
11
|
# * fatal
|
11
12
|
# * error
|
@@ -13,8 +14,8 @@ module Hatchet
|
|
13
14
|
# * info
|
14
15
|
# * debug
|
15
16
|
#
|
16
|
-
# All
|
17
|
-
# a direct string, or as a block to the method is lazily evaluated (this is
|
17
|
+
# All these methods have the same signature. You can either provide a message
|
18
|
+
# as a direct string, or as a block to the method is lazily evaluated (this is
|
18
19
|
# the recommended option).
|
19
20
|
#
|
20
21
|
# Examples
|
@@ -25,6 +26,19 @@ module Hatchet
|
|
25
26
|
# Log messages are sent to each appender where they will be filtered and
|
26
27
|
# invoked as configured.
|
27
28
|
#
|
29
|
+
# Each logger also has 5 inspection methods. Those are, in decreasing order of
|
30
|
+
# severity:
|
31
|
+
#
|
32
|
+
# * fatal?
|
33
|
+
# * error?
|
34
|
+
# * warn?
|
35
|
+
# * info?
|
36
|
+
# * debug?
|
37
|
+
#
|
38
|
+
# All these methods take no arguments and return true if any of the loggers'
|
39
|
+
# appenders will log a message at that level for the current context,
|
40
|
+
# otherwise they will return false.
|
41
|
+
#
|
28
42
|
class HatchetLogger
|
29
43
|
|
30
44
|
# Internal: Creates a new logger.
|
@@ -45,7 +45,7 @@ module Hatchet
|
|
45
45
|
yield self if block_given?
|
46
46
|
|
47
47
|
@logger.level = ::Logger::DEBUG
|
48
|
-
return unless @logger.
|
48
|
+
return unless @logger.respond_to? :formatter
|
49
49
|
|
50
50
|
# Wipe the format of the core Logger. The Rails.logger doesn't have this
|
51
51
|
# method for example.
|
@@ -6,6 +6,10 @@ module Hatchet
|
|
6
6
|
#
|
7
7
|
class StandardFormatter
|
8
8
|
|
9
|
+
def initialize
|
10
|
+
@secs = 0
|
11
|
+
end
|
12
|
+
|
9
13
|
# Public: Returns the formatted message.
|
10
14
|
#
|
11
15
|
# level - The severity of the log message.
|
@@ -15,6 +19,7 @@ module Hatchet
|
|
15
19
|
# Returns the context and message separated by a hypen.
|
16
20
|
#
|
17
21
|
def format(level, context, message)
|
22
|
+
message = message.to_s.strip
|
18
23
|
"#{timestamp} [#{thread_name}] #{format_level level} #{context} - #{message}"
|
19
24
|
end
|
20
25
|
|
@@ -23,7 +28,20 @@ module Hatchet
|
|
23
28
|
# Private: Returns the current time as a String.
|
24
29
|
#
|
25
30
|
def timestamp
|
26
|
-
Time.now
|
31
|
+
time = Time.now
|
32
|
+
|
33
|
+
secs = time.to_i
|
34
|
+
millis = time.nsec/1000000
|
35
|
+
|
36
|
+
return @last if @millis == millis && @secs == secs
|
37
|
+
|
38
|
+
unless secs == @secs
|
39
|
+
@secs = secs
|
40
|
+
@date = time.strftime('%Y-%m-%d %H:%M:%S.')
|
41
|
+
end
|
42
|
+
|
43
|
+
@millis = millis
|
44
|
+
@last = @date + "00#{millis}"[1..3]
|
27
45
|
end
|
28
46
|
|
29
47
|
# Private: Returns the name of the current thread from the processes pid and
|
data/lib/hatchet/version.rb
CHANGED
@@ -54,6 +54,20 @@ describe StandardFormatter do
|
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
57
|
+
describe 'benchmarks' do
|
58
|
+
it 'is reasonably quick' do
|
59
|
+
start = Time.now
|
60
|
+
|
61
|
+
50_000.times do
|
62
|
+
subject.format(:info, @context, @message)
|
63
|
+
end
|
64
|
+
|
65
|
+
took = Time.now - start
|
66
|
+
limit = 0.4
|
67
|
+
assert took < limit, "Expected messages to take less than #{limit} but took #{took}"
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
57
71
|
def format_as_string(time)
|
58
72
|
time.strftime TIME_FORMAT
|
59
73
|
end
|
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.6
|
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-10 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
|
@@ -58,7 +58,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
58
58
|
version: '0'
|
59
59
|
requirements: []
|
60
60
|
rubyforge_project:
|
61
|
-
rubygems_version: 1.8.
|
61
|
+
rubygems_version: 1.8.24
|
62
62
|
signing_key:
|
63
63
|
specification_version: 3
|
64
64
|
summary: Logging library that provides the ability to add class/module specific filters
|