TwP-logging 1.1.4 → 1.2.0
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/History.txt +11 -0
- data/Rakefile +1 -0
- data/lib/logging/layouts/parseable.rb +2 -2
- data/lib/logging/layouts/pattern.rb +7 -8
- data/lib/logging/log_event.rb +13 -19
- data/lib/logging/utils.rb +2 -0
- data/lib/logging.rb +6 -3
- data/test/layouts/test_json.rb +3 -3
- data/test/layouts/test_pattern.rb +10 -10
- data/test/layouts/test_yaml.rb +3 -3
- metadata +16 -5
data/History.txt
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
== 1.2.1 / 2009-08-14
|
2
|
+
|
3
|
+
1 bug fix
|
4
|
+
- Using a bug-fix version of little-plugger
|
5
|
+
|
6
|
+
== 1.2.0 / 2009-08-14
|
7
|
+
|
8
|
+
2 minor enhancements
|
9
|
+
- Added a gem based plugin system
|
10
|
+
- LogEvent is now a struct (slightly faster)
|
11
|
+
|
1
12
|
== 1.1.4 / 2009-05-28
|
2
13
|
|
3
14
|
1 minor enhancement
|
data/Rakefile
CHANGED
@@ -78,14 +78,14 @@ module Logging::Layouts
|
|
78
78
|
# Arguments to sprintf keyed to directive letters
|
79
79
|
DIRECTIVE_TABLE = {
|
80
80
|
'logger' => 'event.logger',
|
81
|
-
'timestamp' => '
|
81
|
+
'timestamp' => 'event.time.strftime(Pattern::ISO8601)',
|
82
82
|
'level' => '::Logging::LNAMES[event.level]',
|
83
83
|
'message' => 'format_obj(event.data)',
|
84
84
|
'file' => 'event.file',
|
85
85
|
'line' => 'event.line',
|
86
86
|
'method' => 'event.method',
|
87
87
|
'pid' => 'Process.pid',
|
88
|
-
'millis' => 'Integer((
|
88
|
+
'millis' => 'Integer((event.time-@created_at)*1000)',
|
89
89
|
'thread_id' => 'Thread.current.object_id',
|
90
90
|
'thread' => 'Thread.current[:name]'
|
91
91
|
}
|
@@ -124,14 +124,14 @@ module Logging::Layouts
|
|
124
124
|
# Arguments to sprintf keyed to directive letters
|
125
125
|
DIRECTIVE_TABLE = {
|
126
126
|
'c' => 'event.logger'.freeze,
|
127
|
-
'd' => 'format_date'.freeze,
|
127
|
+
'd' => 'format_date(event.time)'.freeze,
|
128
128
|
'F' => 'event.file'.freeze,
|
129
129
|
'l' => '::Logging::LNAMES[event.level]'.freeze,
|
130
130
|
'L' => 'event.line'.freeze,
|
131
131
|
'm' => 'format_obj(event.data)'.freeze,
|
132
132
|
'M' => 'event.method'.freeze,
|
133
133
|
'p' => 'Process.pid'.freeze,
|
134
|
-
'r' => 'Integer((
|
134
|
+
'r' => 'Integer((event.time-@created_at)*1000).to_s'.freeze,
|
135
135
|
't' => 'Thread.current.object_id.to_s'.freeze,
|
136
136
|
'T' => 'Thread.current[:name]'.freeze,
|
137
137
|
'%' => :placeholder
|
@@ -158,19 +158,18 @@ module Logging::Layouts
|
|
158
158
|
#
|
159
159
|
def self.create_date_format_methods( pf )
|
160
160
|
code = "undef :format_date if method_defined? :format_date\n"
|
161
|
-
code << "def format_date\n"
|
161
|
+
code << "def format_date( time )\n"
|
162
162
|
if pf.date_method.nil?
|
163
163
|
if pf.date_pattern =~ %r/%s/
|
164
164
|
code << <<-CODE
|
165
|
-
|
166
|
-
|
167
|
-
now.strftime dp
|
165
|
+
dp = '#{pf.date_pattern}'.gsub('%s','%06d' % time.usec)
|
166
|
+
time.strftime dp
|
168
167
|
CODE
|
169
168
|
else
|
170
|
-
code << "
|
169
|
+
code << "time.strftime '#{pf.date_pattern}'\n"
|
171
170
|
end
|
172
171
|
else
|
173
|
-
code << "
|
172
|
+
code << "time.#{pf.date_method}\n"
|
174
173
|
end
|
175
174
|
code << "end\n"
|
176
175
|
::Logging.log_internal(0) {code}
|
data/lib/logging/log_event.rb
CHANGED
@@ -3,8 +3,7 @@ module Logging
|
|
3
3
|
|
4
4
|
# This class defines a logging event.
|
5
5
|
#
|
6
|
-
|
7
|
-
|
6
|
+
LogEvent = Struct.new( :logger, :level, :data, :time, :file, :line, :method ) {
|
8
7
|
# :stopdoc:
|
9
8
|
|
10
9
|
# Regular expression used to parse out caller information
|
@@ -13,8 +12,8 @@ module Logging
|
|
13
12
|
# * $2 == line number
|
14
13
|
# * $3 == method name (might be nil)
|
15
14
|
CALLER_RGXP = %r/([\.\/\(\)\w]+):(\d+)(?::in `(\w+)')?/o
|
16
|
-
|
17
|
-
CALLER_INDEX = RUBY_PLATFORM[%r/^java/i] ? 1 : 2
|
15
|
+
CALLER_INDEX = 2
|
16
|
+
#CALLER_INDEX = RUBY_PLATFORM[%r/^java/i] ? 1 : 2
|
18
17
|
# :startdoc:
|
19
18
|
|
20
19
|
# call-seq:
|
@@ -26,26 +25,21 @@ module Logging
|
|
26
25
|
# invoked to get the execution trace of the logging method.
|
27
26
|
#
|
28
27
|
def initialize( logger, level, data, trace )
|
29
|
-
|
30
|
-
@level = level
|
31
|
-
@data = data
|
32
|
-
@file = @line = @method = ''
|
28
|
+
f = l = m = ''
|
33
29
|
|
34
30
|
if trace
|
35
|
-
|
36
|
-
return if
|
31
|
+
stack = Kernel.caller[CALLER_INDEX]
|
32
|
+
return if stack.nil?
|
37
33
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
34
|
+
match = CALLER_RGXP.match(stack)
|
35
|
+
f = match[1]
|
36
|
+
l = Integer(match[2])
|
37
|
+
m = match[3] unless match[3].nil?
|
42
38
|
end
|
43
|
-
end
|
44
39
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
end # class LogEvent
|
40
|
+
super(logger, level, data, Time.now, f, l, m)
|
41
|
+
end
|
42
|
+
}
|
49
43
|
end # module Logging
|
50
44
|
|
51
45
|
# EOF
|
data/lib/logging/utils.rb
CHANGED
data/lib/logging.rb
CHANGED
@@ -9,24 +9,25 @@ require File.expand_path(
|
|
9
9
|
require 'yaml'
|
10
10
|
require 'stringio'
|
11
11
|
require 'thread'
|
12
|
+
require 'little-plugger'
|
12
13
|
|
13
14
|
HAVE_LOCKFILE = require? 'lockfile'
|
14
15
|
HAVE_SYSLOG = require? 'syslog'
|
15
16
|
require? 'fastthread'
|
16
17
|
|
17
18
|
|
18
|
-
# TODO: Windows Log Service appender
|
19
|
-
|
20
19
|
#
|
21
20
|
#
|
22
21
|
module Logging
|
22
|
+
extend LittlePlugger
|
23
23
|
|
24
24
|
# :stopdoc:
|
25
|
-
VERSION = '1.1
|
25
|
+
VERSION = '1.2.1'
|
26
26
|
LIBPATH = ::File.expand_path(::File.dirname(__FILE__)) + ::File::SEPARATOR
|
27
27
|
PATH = ::File.dirname(LIBPATH) + ::File::SEPARATOR
|
28
28
|
LEVELS = {}
|
29
29
|
LNAMES = []
|
30
|
+
module Plugins; end
|
30
31
|
# :startdoc:
|
31
32
|
|
32
33
|
class << self
|
@@ -282,6 +283,8 @@ module Logging
|
|
282
283
|
longest = 'off' if longest.length < 3
|
283
284
|
module_eval "MAX_LEVEL_LENGTH = #{longest.length}", __FILE__, __LINE__
|
284
285
|
|
286
|
+
initialize_plugins
|
287
|
+
|
285
288
|
levels.keys
|
286
289
|
end
|
287
290
|
|
data/test/layouts/test_json.rb
CHANGED
@@ -68,9 +68,9 @@ module TestLayouts
|
|
68
68
|
def test_items_all
|
69
69
|
event = Logging::LogEvent.new('TestLogger', @levels['info'],
|
70
70
|
'log message', false)
|
71
|
-
event.
|
72
|
-
event.
|
73
|
-
event.
|
71
|
+
event.file = 'test_file.rb'
|
72
|
+
event.line = 123
|
73
|
+
event.method = 'method_name'
|
74
74
|
|
75
75
|
@layout.items = %w[logger]
|
76
76
|
assert_equal %Q[{"logger":"TestLogger"}\n], @layout.format(event)
|
@@ -22,15 +22,15 @@ module TestLayouts
|
|
22
22
|
def test_date_method_eq
|
23
23
|
@layout.date_method = :to_f
|
24
24
|
assert_equal :to_f, @layout.date_method
|
25
|
-
assert_instance_of Float, @layout.format_date
|
25
|
+
assert_instance_of Float, @layout.format_date(Time.now)
|
26
26
|
|
27
27
|
@layout.date_method = 'usec'
|
28
28
|
assert_equal 'usec', @layout.date_method
|
29
|
-
assert_instance_of Fixnum, @layout.format_date
|
29
|
+
assert_instance_of Fixnum, @layout.format_date(Time.now)
|
30
30
|
|
31
31
|
@layout.date_method = :to_s
|
32
32
|
assert_equal :to_s, @layout.date_method
|
33
|
-
assert_instance_of String, @layout.format_date
|
33
|
+
assert_instance_of String, @layout.format_date(Time.now)
|
34
34
|
|
35
35
|
# now, even if we have defined a date_pattern, the date_method should
|
36
36
|
# supersede the date_pattern
|
@@ -38,7 +38,7 @@ module TestLayouts
|
|
38
38
|
|
39
39
|
@layout.date_method = 'usec'
|
40
40
|
assert_equal 'usec', @layout.date_method
|
41
|
-
assert_instance_of Fixnum, @layout.format_date
|
41
|
+
assert_instance_of Fixnum, @layout.format_date(Time.now)
|
42
42
|
end
|
43
43
|
|
44
44
|
def test_date_pattern
|
@@ -48,11 +48,11 @@ module TestLayouts
|
|
48
48
|
def test_date_pattern_eq
|
49
49
|
@layout.date_pattern = '%Y'
|
50
50
|
assert_equal '%Y', @layout.date_pattern
|
51
|
-
assert_match %r/\A\d{4}\z/, @layout.format_date
|
51
|
+
assert_match %r/\A\d{4}\z/, @layout.format_date(Time.now)
|
52
52
|
|
53
53
|
@layout.date_pattern = '%H:%M'
|
54
54
|
assert_equal '%H:%M', @layout.date_pattern
|
55
|
-
assert_match %r/\A\d{2}:\d{2}\z/, @layout.format_date
|
55
|
+
assert_match %r/\A\d{2}:\d{2}\z/, @layout.format_date(Time.now)
|
56
56
|
end
|
57
57
|
|
58
58
|
def test_format
|
@@ -84,7 +84,7 @@ module TestLayouts
|
|
84
84
|
|
85
85
|
def test_format_date
|
86
86
|
rgxp = Regexp.new @date_fmt
|
87
|
-
assert_match rgxp, @layout.format_date
|
87
|
+
assert_match rgxp, @layout.format_date(Time.now)
|
88
88
|
end
|
89
89
|
|
90
90
|
def test_pattern
|
@@ -103,9 +103,9 @@ module TestLayouts
|
|
103
103
|
def test_pattern_all
|
104
104
|
event = Logging::LogEvent.new('TestLogger', @levels['info'],
|
105
105
|
'log message', false)
|
106
|
-
event.
|
107
|
-
event.
|
108
|
-
event.
|
106
|
+
event.file = 'test_file.rb'
|
107
|
+
event.line = '123'
|
108
|
+
event.method = 'method_name'
|
109
109
|
|
110
110
|
@layout.pattern = '%c'
|
111
111
|
assert_equal 'TestLogger', @layout.format(event)
|
data/test/layouts/test_yaml.rb
CHANGED
@@ -66,9 +66,9 @@ module TestLayouts
|
|
66
66
|
def test_items_all
|
67
67
|
event = Logging::LogEvent.new('TestLogger', @levels['info'],
|
68
68
|
'log message', false)
|
69
|
-
event.
|
70
|
-
event.
|
71
|
-
event.
|
69
|
+
event.file = 'test_file.rb'
|
70
|
+
event.line = 123
|
71
|
+
event.method = 'method_name'
|
72
72
|
|
73
73
|
@layout.items = %w[logger]
|
74
74
|
assert_equal %Q[--- \nlogger: TestLogger\n], @layout.format(event)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: TwP-logging
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tim Pease
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-08-14 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -32,6 +32,16 @@ dependencies:
|
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 1.4.3
|
34
34
|
version:
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: little-plugger
|
37
|
+
type: :runtime
|
38
|
+
version_requirement:
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 1.0.1
|
44
|
+
version:
|
35
45
|
- !ruby/object:Gem::Dependency
|
36
46
|
name: bones
|
37
47
|
type: :development
|
@@ -121,8 +131,9 @@ files:
|
|
121
131
|
- test/test_root_logger.rb
|
122
132
|
- test/test_stats.rb
|
123
133
|
- test/test_utils.rb
|
124
|
-
has_rdoc:
|
134
|
+
has_rdoc: false
|
125
135
|
homepage: http://logging.rubyforge.org/
|
136
|
+
licenses:
|
126
137
|
post_install_message:
|
127
138
|
rdoc_options:
|
128
139
|
- --main
|
@@ -144,9 +155,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
144
155
|
requirements: []
|
145
156
|
|
146
157
|
rubyforge_project: logging
|
147
|
-
rubygems_version: 1.
|
158
|
+
rubygems_version: 1.3.5
|
148
159
|
signing_key:
|
149
|
-
specification_version:
|
160
|
+
specification_version: 3
|
150
161
|
summary: A flexible and extendable logging library for Ruby
|
151
162
|
test_files:
|
152
163
|
- test/appenders/test_buffered_io.rb
|