logue 1.0.5 → 1.0.8
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.
- checksums.yaml +4 -4
- data/lib/logue/format.rb +29 -43
- data/lib/logue/log.rb +54 -119
- data/lib/logue/loggable.rb +13 -9
- data/lib/logue/logger.rb +190 -197
- data/lib/logue/pathutil.rb +43 -0
- data/lib/logue/writer.rb +24 -0
- data/lib/logue.rb +1 -1
- data/test/logue/colors_test.rb +12 -0
- data/test/logue/format_test.rb +46 -67
- data/test/logue/log_test.rb +88 -0
- data/test/logue/loggable_test.rb +72 -0
- data/test/logue/logger_test.rb +30 -0
- data/test/logue/pathutil_test.rb +73 -0
- data/test/logue/testlog/log_stack_test.rb +6 -6
- data/test/logue/testlog/log_test.rb +16 -15
- data/test/logue/testlog/loggable_test.rb +3 -4
- data/test/logue/writer_test.rb +57 -0
- metadata +19 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a3d4405454050091913dfa971aeb278078d431b1
|
4
|
+
data.tar.gz: 8a07f226220c9829f09f62da75a3fad08ac12f0f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: db149d129f19bc569a6dce1cb945741821bdcc7ab5c89511463cd4f7f3cfcd8e55b135aa3f8c71a28341bd8af6f4fa319ce83c8970e35fb0f2287ea2848a0794
|
7
|
+
data.tar.gz: 50aeb6028db277427a7ae453205df31d61148bfcd0e5478cf126d65ab0d64f5e065294005fc196bf45f035df3702b6fadb5d59477cd5e34b4cb3e3306d7fdf28
|
data/lib/logue/format.rb
CHANGED
@@ -1,52 +1,38 @@
|
|
1
1
|
#!/usr/bin/ruby -w
|
2
2
|
# -*- ruby -*-
|
3
3
|
|
4
|
-
|
5
|
-
class Format
|
6
|
-
|
7
|
-
def trim_left str, maxlen
|
8
|
-
str[0 ... maxlen.to_i.abs]
|
9
|
-
end
|
10
|
-
|
11
|
-
def trim_right str, maxlen
|
12
|
-
mxln = maxlen.abs
|
13
|
-
|
14
|
-
if str.length > mxln
|
15
|
-
trim_path_right str, maxlen
|
16
|
-
else
|
17
|
-
str
|
18
|
-
end
|
19
|
-
end
|
4
|
+
require 'logue/pathutil'
|
20
5
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
comps.reverse.each do |comp|
|
27
|
-
newstr = comp + "/" + str
|
28
|
-
if newstr.length + 4 <= mxln
|
29
|
-
str = newstr
|
30
|
-
else
|
31
|
-
newstr = "..." + "/" + str
|
32
|
-
if newstr.length <= mxln
|
33
|
-
str = newstr
|
34
|
-
end
|
35
|
-
break
|
36
|
-
end
|
37
|
-
end
|
38
|
-
str
|
39
|
-
end
|
6
|
+
class Logue::FormatWidths
|
7
|
+
DEFAULT_FILENAME = -25
|
8
|
+
DEFAULT_LINENUM = 4
|
9
|
+
DEFAULT_FUNCTION = -20
|
10
|
+
end
|
40
11
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
12
|
+
class Logue::Format
|
13
|
+
def initialize args = Hash.new
|
14
|
+
@file_width = args.fetch :file_width, Logue::FormatWidths::DEFAULT_FILENAME
|
15
|
+
@line_width = args.fetch :line_width, Logue::FormatWidths::DEFAULT_LINENUM
|
16
|
+
@method_width = args.fetch :method_width, Logue::FormatWidths::DEFAULT_FUNCTION
|
17
|
+
@trim = args.fetch :trim, true
|
18
|
+
end
|
47
19
|
|
48
|
-
|
49
|
-
|
20
|
+
def copy args
|
21
|
+
values = { file_width: @file_width, line_width: @line_width, method_width: @method_width, trim: @trim }
|
22
|
+
self.class.new values.merge(args)
|
23
|
+
end
|
24
|
+
|
25
|
+
def format path, lineno, cls, func
|
26
|
+
if cls
|
27
|
+
func = cls.to_s + "#" + func
|
50
28
|
end
|
29
|
+
|
30
|
+
if @trim
|
31
|
+
path = Logue::PathUtil.trim_right path, @file_width
|
32
|
+
func = Logue::PathUtil.trim_left func, @method_width
|
33
|
+
end
|
34
|
+
|
35
|
+
format = "[%#{@file_width}s:%#{@line_width}d] {%#{@method_width}s}"
|
36
|
+
sprintf format, path, lineno, func
|
51
37
|
end
|
52
38
|
end
|
data/lib/logue/log.rb
CHANGED
@@ -5,14 +5,13 @@
|
|
5
5
|
#
|
6
6
|
# Logging Module
|
7
7
|
#
|
8
|
-
# Author:: Jeff Pace
|
8
|
+
# Author:: Jeff Pace
|
9
9
|
# Documentation:: Author
|
10
10
|
#
|
11
11
|
|
12
12
|
require 'logue/logger'
|
13
13
|
require 'logue/severity'
|
14
14
|
require 'logue/colors'
|
15
|
-
require 'rainbow'
|
16
15
|
|
17
16
|
#
|
18
17
|
# == Log
|
@@ -37,7 +36,7 @@ require 'rainbow'
|
|
37
36
|
# That will simply log the given message.
|
38
37
|
#
|
39
38
|
# class YourClass
|
40
|
-
# include Loggable
|
39
|
+
# include Logue::Loggable
|
41
40
|
#
|
42
41
|
# def some_method(...)
|
43
42
|
# log "my message"
|
@@ -55,10 +54,6 @@ module Logue
|
|
55
54
|
class Log
|
56
55
|
$LOGGING_LEVEL = nil
|
57
56
|
|
58
|
-
DEFAULT_FILENAME_WIDTH = -25
|
59
|
-
DEFAULT_LINENUM_WIDTH = 4
|
60
|
-
DEFAULT_FUNCTION_WIDTH = -20
|
61
|
-
|
62
57
|
include Log::Severity
|
63
58
|
|
64
59
|
# by default, class methods delegate to a single app-wide log.
|
@@ -71,134 +66,78 @@ module Logue
|
|
71
66
|
@@log
|
72
67
|
end
|
73
68
|
|
69
|
+
def self.accessors methname
|
70
|
+
[ methname.to_sym, (methname.to_s + "=").to_sym ]
|
71
|
+
end
|
72
|
+
|
73
|
+
def self.logger_delegated? meth
|
74
|
+
@@logger_delegated ||= Array.new.tap do |ary|
|
75
|
+
acc_methods = [
|
76
|
+
:colorize_line,
|
77
|
+
:format,
|
78
|
+
:level,
|
79
|
+
:outfile,
|
80
|
+
:output,
|
81
|
+
:quiet,
|
82
|
+
:verbose,
|
83
|
+
]
|
84
|
+
ary.concat acc_methods.collect { |am| accessors(am) }.flatten!
|
85
|
+
read_methods = [
|
86
|
+
:ignore_class,
|
87
|
+
:ignore_file,
|
88
|
+
:ignore_method,
|
89
|
+
:log_class,
|
90
|
+
:log_file,
|
91
|
+
:log_method,
|
92
|
+
:set_color,
|
93
|
+
:set_default_widths,
|
94
|
+
:set_widths,
|
95
|
+
]
|
96
|
+
ary.concat read_methods
|
97
|
+
end
|
98
|
+
@@logger_delegated.include? meth
|
99
|
+
end
|
100
|
+
|
74
101
|
def self.method_missing meth, *args, &blk
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
102
|
+
if logger_delegated? meth
|
103
|
+
logger.send meth, *args, &blk
|
104
|
+
elsif Colors::valid_colors[meth]
|
105
|
+
# only handling foregrounds, not backgrounds
|
106
|
+
logger.send meth, *args, &blk
|
79
107
|
else
|
80
108
|
super
|
81
109
|
end
|
82
110
|
end
|
83
111
|
|
84
112
|
def self.respond_to? meth
|
85
|
-
Colors::valid_colors.include?(meth) || super
|
113
|
+
logger_delegated?(meth) || Colors::valid_colors.include?(meth) || super
|
86
114
|
end
|
87
115
|
|
88
116
|
def self.add_color_method color, code
|
89
117
|
instmeth = Array.new
|
90
118
|
instmeth << "def #{color} msg = \"\", lvl = Log::DEBUG, depth = 1, cname = nil, &blk"
|
91
|
-
instmeth << "
|
119
|
+
instmeth << " logger.#{color} (\"\\e[#{code}m\#{msg\}\\e[0m\", lvl, depth + 1, cname, &blk)"
|
92
120
|
instmeth << "end"
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
clsmeth << "def #{color} msg = \"\", lvl = Log::DEBUG, depth = 1, cname = nil, &blk"
|
97
|
-
clsmeth << " logger.#{color}(\"\\e[#{code}m\#{msg\}\\e[0m\", lvl, depth + 1, cname, &blk)"
|
98
|
-
clsmeth << "end"
|
99
|
-
|
100
|
-
class_eval clsmeth.join("\n")
|
101
|
-
end
|
102
|
-
|
103
|
-
def self.set_default_widths
|
104
|
-
logger.set_default_widths
|
105
|
-
end
|
106
|
-
|
107
|
-
def self.verbose
|
108
|
-
logger.verbose
|
109
|
-
end
|
110
|
-
|
111
|
-
def self.verbose= v
|
112
|
-
logger.verbose = v && v != 0 ? DEBUG : FATAL
|
113
|
-
end
|
114
|
-
|
115
|
-
def self.level= lvl
|
116
|
-
logger.level = lvl
|
117
|
-
end
|
118
|
-
|
119
|
-
def self.quiet
|
120
|
-
logger.quiet
|
121
|
-
end
|
122
|
-
|
123
|
-
def self.quiet= q
|
124
|
-
logger.quiet = q
|
125
|
-
end
|
126
|
-
|
127
|
-
def self.format
|
128
|
-
logger.format
|
129
|
-
end
|
130
|
-
|
131
|
-
def self.format= fmt
|
132
|
-
logger.format = fmt
|
133
|
-
end
|
134
|
-
|
135
|
-
# Assigns output to the given stream.
|
136
|
-
def self.output= io
|
137
|
-
logger.output = io
|
138
|
-
end
|
139
|
-
|
140
|
-
def self.output
|
141
|
-
logger.output
|
142
|
-
end
|
143
|
-
|
144
|
-
# sets whether to colorize the entire line, or just the message.
|
145
|
-
def self.colorize_line= col
|
146
|
-
logger.colorize_line = col
|
147
|
-
end
|
148
|
-
|
149
|
-
def self.colorize_line
|
150
|
-
logger.colorize_line
|
151
|
-
end
|
152
|
-
|
153
|
-
# Assigns output to a file with the given name. Returns the file; client
|
154
|
-
# is responsible for closing it.
|
155
|
-
def self.outfile= fname
|
156
|
-
logger.outfile = fname
|
157
|
-
end
|
158
|
-
|
159
|
-
def self.outfile
|
160
|
-
logger.outfile
|
121
|
+
|
122
|
+
# an instance, but on the class object, not the log instance:
|
123
|
+
self.instance_eval instmeth.join("\n")
|
161
124
|
end
|
162
125
|
|
163
126
|
# Creates a printf format for the given widths, for aligning output.
|
164
127
|
def self.set_widths file_width, line_width, func_width
|
165
128
|
logger.set_widths file_width, line_width, func_width
|
166
129
|
end
|
167
|
-
|
168
|
-
def self.ignore_file fname
|
169
|
-
logger.ignore_file fname
|
170
|
-
end
|
171
130
|
|
172
|
-
def self.
|
173
|
-
logger.
|
174
|
-
end
|
175
|
-
|
176
|
-
def self.ignore_class classname
|
177
|
-
logger.ignored_class classname
|
178
|
-
end
|
179
|
-
|
180
|
-
def self.log_file fname
|
181
|
-
logger.log_file fname
|
182
|
-
end
|
183
|
-
|
184
|
-
def self.log_method methname
|
185
|
-
logger.log_method methname
|
186
|
-
end
|
187
|
-
|
188
|
-
def self.log_class classname
|
189
|
-
logger.log_class classname
|
190
|
-
end
|
191
|
-
|
192
|
-
def self.debug msg = "", depth = 1, &blk
|
193
|
-
logger.log msg, DEBUG, depth + 1, &blk
|
131
|
+
def self.debug msg = "", depth = 1, cname = nil, &blk
|
132
|
+
logger.debug msg, depth + 1, cname, &blk
|
194
133
|
end
|
195
134
|
|
196
|
-
def self.info msg = "", depth = 1, &blk
|
197
|
-
logger.
|
135
|
+
def self.info msg = "", depth = 1, cname = nil, &blk
|
136
|
+
logger.info msg, depth + 1, cname, &blk
|
198
137
|
end
|
199
138
|
|
200
|
-
def self.fatal msg = "", depth = 1, &blk
|
201
|
-
logger.
|
139
|
+
def self.fatal msg = "", depth = 1, cname = nil, &blk
|
140
|
+
logger.fatal msg, depth + 1, cname, &blk
|
202
141
|
end
|
203
142
|
|
204
143
|
def self.log msg = "", lvl = DEBUG, depth = 1, cname = nil, &blk
|
@@ -209,17 +148,17 @@ module Logue
|
|
209
148
|
logger.stack msg, lvl, depth + 1, cname, &blk
|
210
149
|
end
|
211
150
|
|
212
|
-
def self.warn msg = "", depth = 1, &blk
|
151
|
+
def self.warn msg = "", depth = 1, cname = nil, &blk
|
213
152
|
if verbose
|
214
|
-
logger.log msg, WARN, depth + 1, &blk
|
153
|
+
logger.log msg, WARN, depth + 1, cname, &blk
|
215
154
|
else
|
216
155
|
$stderr.puts "WARNING: " + msg
|
217
156
|
end
|
218
157
|
end
|
219
158
|
|
220
|
-
def self.error msg = "", depth = 1, &blk
|
159
|
+
def self.error msg = "", depth = 1, cname = nil, &blk
|
221
160
|
if verbose
|
222
|
-
logger.log msg, ERROR, depth + 1, &blk
|
161
|
+
logger.log msg, ERROR, depth + 1, cname, &blk
|
223
162
|
else
|
224
163
|
$stderr.puts "ERROR: " + msg
|
225
164
|
end
|
@@ -234,9 +173,5 @@ module Logue
|
|
234
173
|
$stderr.puts msg
|
235
174
|
end
|
236
175
|
end
|
237
|
-
|
238
|
-
def self.set_color lvl, color
|
239
|
-
logger.set_color lvl, color
|
240
|
-
end
|
241
176
|
end
|
242
177
|
end
|
data/lib/logue/loggable.rb
CHANGED
@@ -24,7 +24,7 @@ require 'logue/colors'
|
|
24
24
|
# == Usage
|
25
25
|
#
|
26
26
|
# class YourClass
|
27
|
-
# include Loggable
|
27
|
+
# include Logue::Loggable
|
28
28
|
#
|
29
29
|
# def some_method(...)
|
30
30
|
# log "my message"
|
@@ -42,35 +42,35 @@ module Logue
|
|
42
42
|
module Loggable
|
43
43
|
# Logs the given message, including the class whence invoked.
|
44
44
|
def log msg = "", lvl = Log::DEBUG, depth = 1, &blk
|
45
|
-
|
45
|
+
delegate_log_class.log msg, lvl, depth + 1, self.class.to_s, &blk
|
46
46
|
end
|
47
47
|
|
48
48
|
def debug msg = "", depth = 1, &blk
|
49
|
-
|
49
|
+
delegate_log_class.debug msg, depth + 1, self.class.to_s, &blk
|
50
50
|
end
|
51
51
|
|
52
52
|
def info msg = "", depth = 1, &blk
|
53
|
-
|
53
|
+
delegate_log_class.info msg, depth + 1, self.class.to_s, &blk
|
54
54
|
end
|
55
55
|
|
56
56
|
def warn msg = "", depth = 1, &blk
|
57
|
-
|
57
|
+
delegate_log_class.warn msg, depth + 1, self.class.to_s, &blk
|
58
58
|
end
|
59
59
|
|
60
60
|
def error msg = "", depth = 1, &blk
|
61
|
-
|
61
|
+
delegate_log_class.error msg, depth + 1, self.class.to_s, &blk
|
62
62
|
end
|
63
63
|
|
64
64
|
def fatal msg = "", depth = 1, &blk
|
65
|
-
|
65
|
+
delegate_log_class.fatal msg, depth + 1, self.class.to_s, &blk
|
66
66
|
end
|
67
67
|
|
68
68
|
def stack msg = "", lvl = Log::DEBUG, depth = 1, &blk
|
69
|
-
|
69
|
+
delegate_log_class.stack msg, lvl, depth + 1, self.class.to_s, &blk
|
70
70
|
end
|
71
71
|
|
72
72
|
def write msg = "", depth = 1, &blk
|
73
|
-
|
73
|
+
delegate_log_class.write msg, depth + 1, self.class.to_s, &blk
|
74
74
|
end
|
75
75
|
|
76
76
|
def method_missing meth, *args, &blk
|
@@ -94,5 +94,9 @@ module Logue
|
|
94
94
|
meth << "end"
|
95
95
|
self.class.module_eval meth.join("\n")
|
96
96
|
end
|
97
|
+
|
98
|
+
def delegate_log_class
|
99
|
+
Log
|
100
|
+
end
|
97
101
|
end
|
98
102
|
end
|