hatchet 0.0.19 → 0.0.20
Sign up to get free protection for your applications and to get access to all the features.
- data/RELEASE.md +6 -0
- data/lib/hatchet/backtrace_formatter.rb +52 -0
- data/lib/hatchet/plain_formatter.rb +2 -17
- data/lib/hatchet/simple_formatter.rb +16 -15
- data/lib/hatchet/standard_formatter.rb +5 -22
- data/lib/hatchet/thread_name_formatter.rb +25 -0
- data/lib/hatchet/version.rb +1 -1
- data/lib/hatchet.rb +2 -0
- data/spec/simple_formatter_spec.rb +16 -0
- metadata +4 -2
data/RELEASE.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
# Release notes
|
2
2
|
|
3
|
+
## 0.0.20
|
4
|
+
|
5
|
+
* Added a `#thread_context` attribute to the `SimpleFormatter` that is `false`
|
6
|
+
by default, but when set to `true` will output the context of the thread
|
7
|
+
within messages in the same style as the `StandardFormatter`
|
8
|
+
|
3
9
|
## 0.0.19
|
4
10
|
|
5
11
|
* Changed core formatters to output an indented backtrace after a message when
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
module Hatchet
|
4
|
+
|
5
|
+
# Internal: Module for handling the common code for conditionally including
|
6
|
+
# the backtrace within a formatted message.
|
7
|
+
#
|
8
|
+
module BacktraceFormatter
|
9
|
+
|
10
|
+
# Public: Gets whether backtraces are enabled.
|
11
|
+
#
|
12
|
+
# Defaults to true if it has not been set.
|
13
|
+
#
|
14
|
+
def backtrace
|
15
|
+
@backtrace.nil? ? true : @backtrace
|
16
|
+
end
|
17
|
+
|
18
|
+
# Public: Sets whether backtraces should be enabled.
|
19
|
+
#
|
20
|
+
# value - True if backtraces should be enabled, otherwise false.
|
21
|
+
#
|
22
|
+
def backtrace=(value)
|
23
|
+
@backtrace = value
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
# Private: Method that takes an already formatted message and appends the
|
29
|
+
# backtrace to it if there is one and backtraces are enabled.
|
30
|
+
#
|
31
|
+
# message - The Message that is being formatted.
|
32
|
+
# message_without_backtrace - The formatted message before a backtrace may
|
33
|
+
# be added.
|
34
|
+
#
|
35
|
+
# Returns a message with a backtrace optionally appended to it.
|
36
|
+
#
|
37
|
+
def with_backtrace(message, message_without_backtrace)
|
38
|
+
msg = message_without_backtrace
|
39
|
+
error = message.error
|
40
|
+
|
41
|
+
if self.backtrace && error && error.respond_to?(:backtrace)
|
42
|
+
indented_backtrace = error.backtrace.map { |line| " #{line}" }.to_a
|
43
|
+
msg = ([msg] + indented_backtrace).join("\n")
|
44
|
+
end
|
45
|
+
|
46
|
+
msg
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
|
@@ -8,17 +8,7 @@ module Hatchet
|
|
8
8
|
# be human readable rather than useful for grepping, etc.
|
9
9
|
#
|
10
10
|
class PlainFormatter
|
11
|
-
|
12
|
-
# Public: Gets or sets whether backtraces should be output when messages
|
13
|
-
# contain an error with one.
|
14
|
-
#
|
15
|
-
attr_accessor :backtrace
|
16
|
-
|
17
|
-
# Public: Creates a new instance.
|
18
|
-
#
|
19
|
-
def initialize
|
20
|
-
self.backtrace = true
|
21
|
-
end
|
11
|
+
include BacktraceFormatter
|
22
12
|
|
23
13
|
# Public: Returns the formatted message.
|
24
14
|
#
|
@@ -34,12 +24,7 @@ module Hatchet
|
|
34
24
|
# The backtrace is only present if the message contains an error.
|
35
25
|
#
|
36
26
|
def format(level, context, message)
|
37
|
-
|
38
|
-
message.to_s
|
39
|
-
else
|
40
|
-
indented_backtrace = message.error.backtrace.map { |line| " #{line}" }.to_a
|
41
|
-
([message.to_s] + indented_backtrace).join "\n"
|
42
|
-
end
|
27
|
+
with_backtrace(message, message.to_s)
|
43
28
|
end
|
44
29
|
|
45
30
|
end
|
@@ -6,17 +6,13 @@ module Hatchet
|
|
6
6
|
# and message.
|
7
7
|
#
|
8
8
|
class SimpleFormatter
|
9
|
+
include BacktraceFormatter
|
10
|
+
include ThreadNameFormatter
|
9
11
|
|
10
|
-
# Public: Gets or sets whether
|
11
|
-
#
|
12
|
+
# Public: Gets or sets whether the context of the thread (pid and thread ID)
|
13
|
+
# should be included into the output messages.
|
12
14
|
#
|
13
|
-
attr_accessor :
|
14
|
-
|
15
|
-
# Public: Creates a new instance.
|
16
|
-
#
|
17
|
-
def initialize
|
18
|
-
self.backtrace = true
|
19
|
-
end
|
15
|
+
attr_accessor :thread_context
|
20
16
|
|
21
17
|
# Public: Returns the formatted message.
|
22
18
|
#
|
@@ -26,18 +22,23 @@ module Hatchet
|
|
26
22
|
#
|
27
23
|
# Returns messages in the format:
|
28
24
|
#
|
29
|
-
# LEVEL - CONTEXT - MESSAGE
|
25
|
+
# [THREAD] - LEVEL - CONTEXT - MESSAGE
|
30
26
|
# BACKTRACE
|
31
27
|
#
|
32
|
-
# The backtrace is only present if the message contains an error
|
28
|
+
# The backtrace is only present if the message contains an error and the
|
29
|
+
# presence of the context of the thread context is managed via the
|
30
|
+
# #thread_context attribute.
|
33
31
|
#
|
34
32
|
def format(level, context, message)
|
35
33
|
msg = message.to_s.strip
|
36
|
-
|
37
|
-
|
38
|
-
msg =
|
34
|
+
|
35
|
+
if thread_context
|
36
|
+
msg = "[#{thread_name}] - #{level.to_s.upcase} - #{context} - #{msg}"
|
37
|
+
else
|
38
|
+
msg = "#{level.to_s.upcase} - #{context} - #{msg}"
|
39
39
|
end
|
40
|
-
|
40
|
+
|
41
|
+
with_backtrace(message, msg)
|
41
42
|
end
|
42
43
|
|
43
44
|
end
|
@@ -5,17 +5,13 @@ module Hatchet
|
|
5
5
|
# Public: Standard formatter class. Outputs messages in the TTCC of log4j.
|
6
6
|
#
|
7
7
|
class StandardFormatter
|
8
|
-
|
9
|
-
|
10
|
-
# contain an error with one.
|
11
|
-
#
|
12
|
-
attr_accessor :backtrace
|
8
|
+
include BacktraceFormatter
|
9
|
+
include ThreadNameFormatter
|
13
10
|
|
14
11
|
# Public: Creates a new instance.
|
15
12
|
#
|
16
13
|
def initialize
|
17
14
|
@secs = 0
|
18
|
-
self.backtrace = true
|
19
15
|
end
|
20
16
|
|
21
17
|
# Public: Returns the formatted message.
|
@@ -33,11 +29,9 @@ module Hatchet
|
|
33
29
|
#
|
34
30
|
def format(level, context, message)
|
35
31
|
msg = message.to_s.strip
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
end
|
40
|
-
"#{timestamp} [#{thread_name}] #{format_level level} #{context} - #{msg}"
|
32
|
+
msg = "#{timestamp} [#{thread_name}] #{format_level level} #{context} - #{msg}"
|
33
|
+
|
34
|
+
with_backtrace(message, msg)
|
41
35
|
end
|
42
36
|
|
43
37
|
private
|
@@ -61,17 +55,6 @@ module Hatchet
|
|
61
55
|
@last = @date + "00#{millis}"[-3..-1]
|
62
56
|
end
|
63
57
|
|
64
|
-
# Private: Returns the name of the current thread from the processes pid and
|
65
|
-
# the threads object_id when it is not the main thread for the process.
|
66
|
-
#
|
67
|
-
def thread_name
|
68
|
-
if Thread.current == Thread.main
|
69
|
-
Process.pid
|
70
|
-
else
|
71
|
-
"#{Process.pid}##{Thread.current.object_id}"
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
58
|
# Private: Returns the level formatted for log output as a String.
|
76
59
|
#
|
77
60
|
def format_level(level)
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
module Hatchet
|
4
|
+
|
5
|
+
# Internal: Module for standardizing the formatting of thread contexts.
|
6
|
+
#
|
7
|
+
module ThreadNameFormatter
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
# Private: Returns the name of the current thread from the processes pid and
|
12
|
+
# the threads object_id when it is not the main thread for the process.
|
13
|
+
#
|
14
|
+
def thread_name
|
15
|
+
if Thread.current == Thread.main
|
16
|
+
Process.pid
|
17
|
+
else
|
18
|
+
"#{Process.pid}##{Thread.current.object_id}"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
data/lib/hatchet/version.rb
CHANGED
data/lib/hatchet.rb
CHANGED
@@ -3,6 +3,8 @@
|
|
3
3
|
require 'logger'
|
4
4
|
|
5
5
|
require_relative 'hatchet/level_manager'
|
6
|
+
require_relative 'hatchet/backtrace_formatter'
|
7
|
+
require_relative 'hatchet/thread_name_formatter'
|
6
8
|
require_relative 'hatchet/configuration'
|
7
9
|
require_relative 'hatchet/delegating_formatter'
|
8
10
|
require_relative 'hatchet/hatchet_logger'
|
@@ -52,6 +52,22 @@ describe SimpleFormatter do
|
|
52
52
|
end
|
53
53
|
|
54
54
|
end
|
55
|
+
|
56
|
+
describe 'with thread context' do
|
57
|
+
|
58
|
+
before do
|
59
|
+
subject.thread_context = true
|
60
|
+
@message = Message.new(' Hello, World ')
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'outputs the message in the [THREAD] - LEVEL - CONTEXT - MESSAGE format' do
|
64
|
+
message = subject.format(:info, 'Custom::Context', @message)
|
65
|
+
assert "[#{Process.pid}] - INFO - Custom::Context - Hello, World" == message, "got #{message}"
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
|
55
70
|
end
|
71
|
+
|
56
72
|
end
|
57
73
|
|
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.20
|
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-11-
|
12
|
+
date: 2012-11-11 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
|
@@ -19,6 +19,7 @@ executables: []
|
|
19
19
|
extensions: []
|
20
20
|
extra_rdoc_files: []
|
21
21
|
files:
|
22
|
+
- lib/hatchet/backtrace_formatter.rb
|
22
23
|
- lib/hatchet/configuration.rb
|
23
24
|
- lib/hatchet/delegating_formatter.rb
|
24
25
|
- lib/hatchet/hatchet_logger.rb
|
@@ -29,6 +30,7 @@ files:
|
|
29
30
|
- lib/hatchet/railtie.rb
|
30
31
|
- lib/hatchet/simple_formatter.rb
|
31
32
|
- lib/hatchet/standard_formatter.rb
|
33
|
+
- lib/hatchet/thread_name_formatter.rb
|
32
34
|
- lib/hatchet/version.rb
|
33
35
|
- lib/hatchet.rb
|
34
36
|
- spec/configuration_spec.rb
|