logue 1.0.17 → 1.1.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.
- checksums.yaml +5 -5
- data/.gitignore +0 -0
- data/.glarkrc +0 -0
- data/.idea/.gitignore +10 -0
- data/.idea/aws.xml +11 -0
- data/.idea/codeStyles/Project.xml +7 -0
- data/.idea/codeStyles/codeStyleConfig.xml +5 -0
- data/.idea/inspectionProfiles/Project_Default.xml +11 -0
- data/.idea/libraries/pkg.xml +16 -0
- data/.idea/logue.iml +53 -0
- data/.idea/misc.xml +9 -0
- data/.idea/modules.xml +8 -0
- data/.idea/vcs.xml +6 -0
- data/Gemfile +0 -0
- data/Gemfile.lock +8 -8
- data/LICENSE.txt +0 -0
- data/README.md +0 -0
- data/lib/logue/{colorlog.rb → colorable.rb} +6 -27
- data/lib/logue/core/applog.rb +18 -0
- data/lib/logue/core/base_loggable.rb +58 -0
- data/lib/logue/core/base_writer.rb +23 -0
- data/lib/logue/core/dynamic.rb +17 -0
- data/lib/logue/core/object_util.rb +6 -0
- data/lib/logue/elements/base_element.rb +21 -0
- data/lib/logue/elements/block_element.rb +16 -0
- data/lib/logue/elements/element.rb +13 -0
- data/lib/logue/elements/element_factory.rb +48 -0
- data/lib/logue/elements/element_lines.rb +23 -0
- data/lib/logue/elements/elements_log.rb +21 -0
- data/lib/logue/elements/elements_loggable.rb +17 -0
- data/lib/logue/elements/elements_writer.rb +33 -0
- data/lib/logue/elements/enum_element.rb +12 -0
- data/lib/logue/elements/hash_element.rb +9 -0
- data/lib/logue/elements/indexed_element.rb +15 -0
- data/lib/logue/elements/msg_element.rb +13 -0
- data/lib/logue/elements/msg_obj_element.rb +13 -0
- data/lib/logue/elements/struct_element.rb +9 -0
- data/lib/logue/elements/verbose_element.rb +18 -0
- data/lib/logue/filter.rb +8 -49
- data/lib/logue/{location_format.rb → format/location_format.rb} +16 -11
- data/lib/logue/format/pathutil.rb +36 -0
- data/lib/logue/legacy_logger.rb +7 -18
- data/lib/logue/level.rb +0 -11
- data/lib/logue/levels/level_logger.rb +55 -0
- data/lib/logue/lines/line_base.rb +4 -0
- data/lib/logue/lines/line_block.rb +11 -0
- data/lib/logue/lines/line_msg_block.rb +12 -0
- data/lib/logue/lines/line_msg_obj.rb +19 -0
- data/lib/logue/lines/lines_factory.rb +19 -0
- data/lib/logue/lines/lines_writer.rb +29 -0
- data/lib/logue/locations/frame.rb +19 -0
- data/lib/logue/locations/location.rb +17 -0
- data/lib/logue/locations/location_writer.rb +13 -0
- data/lib/logue/{stack.rb → locations/stack.rb} +5 -7
- data/lib/logue/log.rb +27 -60
- data/lib/logue/loggable.rb +4 -30
- data/lib/logue/logger.rb +28 -81
- data/lib/logue/version.rb +1 -4
- data/lib/logue/writer.rb +2 -31
- data/lib/logue/writer2.rb +5 -0
- data/lib/logue.rb +3 -3
- data/logue.gemspec +3 -3
- metadata +58 -22
- data/lib/logue/element.rb +0 -16
- data/lib/logue/frame.rb +0 -37
- data/lib/logue/line.rb +0 -44
- data/lib/logue/location.rb +0 -24
- data/lib/logue/pathutil.rb +0 -39
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require 'logue/elements/element'
|
|
2
|
+
|
|
3
|
+
module Logue
|
|
4
|
+
class VerboseElement < Element
|
|
5
|
+
def write_element
|
|
6
|
+
obj = @object
|
|
7
|
+
write_msg_object @msg, "verbose"
|
|
8
|
+
write_msg_object @msg + ".class", obj.class
|
|
9
|
+
write_msg_object @msg + ".id", obj.object_id
|
|
10
|
+
write_msg_object @msg, obj
|
|
11
|
+
vars = obj.instance_variables
|
|
12
|
+
vars.each do |v|
|
|
13
|
+
value = obj.instance_variable_get v
|
|
14
|
+
write_msg_object @msg + "." + v.to_s, value
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
data/lib/logue/filter.rb
CHANGED
|
@@ -1,60 +1,19 @@
|
|
|
1
|
-
#!/usr/bin/ruby -w
|
|
2
|
-
# -*- ruby -*-
|
|
3
|
-
|
|
4
1
|
require 'pathname'
|
|
5
2
|
|
|
6
3
|
module Logue
|
|
7
4
|
class Filter
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
attr_reader :
|
|
11
|
-
attr_reader :ignored_methods
|
|
12
|
-
attr_reader :ignored_classes
|
|
13
|
-
|
|
14
|
-
def initialize ignored_files: Array.new, ignored_methods: Array.new, ignored_classes: Array.new
|
|
15
|
-
@ignored_files = ignored_files
|
|
16
|
-
@ignored_methods = ignored_methods
|
|
17
|
-
@ignored_classes = ignored_classes
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def ignore_file file
|
|
21
|
-
@ignored_files << file
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def log_file file
|
|
25
|
-
@ignored_files.delete file
|
|
26
|
-
end
|
|
5
|
+
attr_reader :files
|
|
6
|
+
attr_reader :methods
|
|
7
|
+
attr_reader :classes
|
|
27
8
|
|
|
28
|
-
def
|
|
29
|
-
@
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
def log_class cls
|
|
33
|
-
@ignored_classes.delete cls
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def ignore_method meth
|
|
37
|
-
@ignored_methods << meth
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def log_method meth
|
|
41
|
-
@ignored_methods.delete meth
|
|
9
|
+
def initialize files: Array.new, methods: Array.new, classes: Array.new
|
|
10
|
+
@files = files
|
|
11
|
+
@methods = methods
|
|
12
|
+
@classes = classes
|
|
42
13
|
end
|
|
43
14
|
|
|
44
15
|
def log? file, cls, meth
|
|
45
|
-
!@
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def compare_fields
|
|
49
|
-
[ :ignored_files, :ignored_methods, :ignored_classes ]
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def <=> other
|
|
53
|
-
compare_fields.each do |field|
|
|
54
|
-
cmp = send(field) <=> other.send(field)
|
|
55
|
-
return cmp if cmp.nonzero?
|
|
56
|
-
end
|
|
57
|
-
0
|
|
16
|
+
!@files.include?(file) && !@classes.include?(cls) && !@methods.include?(meth)
|
|
58
17
|
end
|
|
59
18
|
end
|
|
60
19
|
end
|
|
@@ -1,26 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
# -*- ruby -*-
|
|
3
|
-
|
|
4
|
-
require 'logue/pathutil'
|
|
1
|
+
require 'logue/format/pathutil'
|
|
5
2
|
|
|
6
3
|
module Logue
|
|
7
4
|
class LocationFormat
|
|
8
5
|
module Defaults
|
|
9
6
|
FILENAME = -25
|
|
10
|
-
LINE
|
|
11
|
-
METHOD
|
|
7
|
+
LINE = 4
|
|
8
|
+
METHOD = -20
|
|
12
9
|
end
|
|
13
|
-
|
|
10
|
+
|
|
14
11
|
attr_accessor :file
|
|
15
12
|
attr_accessor :line
|
|
16
13
|
attr_accessor :method
|
|
17
|
-
|
|
14
|
+
|
|
18
15
|
def initialize file: Defaults::FILENAME, line: Defaults::LINE, method: Defaults::METHOD
|
|
19
|
-
@file
|
|
20
|
-
@line
|
|
16
|
+
@file = file
|
|
17
|
+
@line = line
|
|
21
18
|
@method = method
|
|
22
19
|
end
|
|
23
|
-
|
|
20
|
+
|
|
24
21
|
def format path, line, cls, methname
|
|
25
22
|
name = cls ? cls.to_s + "#" + methname : methname
|
|
26
23
|
path = PathUtil.trim_right path.to_s, @file.abs
|
|
@@ -28,8 +25,16 @@ module Logue
|
|
|
28
25
|
sprintf format_string, path, line, name
|
|
29
26
|
end
|
|
30
27
|
|
|
28
|
+
def format_location location
|
|
29
|
+
format location.path, location.line, location.cls, location.method
|
|
30
|
+
end
|
|
31
|
+
|
|
31
32
|
def format_string
|
|
32
33
|
"[%#{@file}s:%#{@line}d] {%#{@method}s}"
|
|
33
34
|
end
|
|
35
|
+
|
|
36
|
+
def to_s
|
|
37
|
+
inspect
|
|
38
|
+
end
|
|
34
39
|
end
|
|
35
40
|
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
module Logue
|
|
2
|
+
module PathUtil
|
|
3
|
+
extend self
|
|
4
|
+
|
|
5
|
+
def trim_left str, maxlen
|
|
6
|
+
str[0, maxlen] || ""
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def trim_right str, maxlen
|
|
10
|
+
if str.length > maxlen
|
|
11
|
+
trim_path_right str, maxlen
|
|
12
|
+
else
|
|
13
|
+
str
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def trim_path_right path, maxlen
|
|
18
|
+
return "" if maxlen < 0
|
|
19
|
+
comps = path.split "/"
|
|
20
|
+
str = comps.pop
|
|
21
|
+
comps.reverse.each do |comp|
|
|
22
|
+
newstr = comp + "/" + str
|
|
23
|
+
if newstr.length + 4 <= maxlen
|
|
24
|
+
str = newstr
|
|
25
|
+
else
|
|
26
|
+
newstr = ".../" + str
|
|
27
|
+
if newstr.length <= maxlen
|
|
28
|
+
str = newstr
|
|
29
|
+
end
|
|
30
|
+
break
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
str
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
data/lib/logue/legacy_logger.rb
CHANGED
|
@@ -1,16 +1,5 @@
|
|
|
1
|
-
#!/usr/bin/ruby -w
|
|
2
|
-
# -*- ruby -*-
|
|
3
|
-
#
|
|
4
|
-
# = legacy_logger.rb
|
|
5
|
-
#
|
|
6
|
-
# Logging Module
|
|
7
|
-
#
|
|
8
|
-
# Author:: Jeff Pace <jeugenepace@gmail.com>
|
|
9
|
-
# Documentation:: Author
|
|
10
|
-
#
|
|
11
|
-
|
|
12
1
|
require 'logue/filter'
|
|
13
|
-
require 'logue/location_format'
|
|
2
|
+
require 'logue/format/location_format'
|
|
14
3
|
|
|
15
4
|
module Logue
|
|
16
5
|
module LegacyLogger
|
|
@@ -19,27 +8,27 @@ module Logue
|
|
|
19
8
|
end
|
|
20
9
|
|
|
21
10
|
def ignore_file fname
|
|
22
|
-
filter.
|
|
11
|
+
filter.files << fname
|
|
23
12
|
end
|
|
24
13
|
|
|
25
14
|
def ignore_method methname
|
|
26
|
-
filter.
|
|
15
|
+
filter.methods << methname
|
|
27
16
|
end
|
|
28
17
|
|
|
29
18
|
def ignore_class classname
|
|
30
|
-
filter.
|
|
19
|
+
filter.classes << classname
|
|
31
20
|
end
|
|
32
21
|
|
|
33
22
|
def log_file fname
|
|
34
|
-
filter.
|
|
23
|
+
filter.files.delete fname
|
|
35
24
|
end
|
|
36
25
|
|
|
37
26
|
def log_method methname
|
|
38
|
-
filter.
|
|
27
|
+
filter.methods.delete methname
|
|
39
28
|
end
|
|
40
29
|
|
|
41
30
|
def log_class classname
|
|
42
|
-
filter.
|
|
31
|
+
filter.classes.delete classname
|
|
43
32
|
end
|
|
44
33
|
|
|
45
34
|
def output
|
data/lib/logue/level.rb
CHANGED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
require 'logue/level'
|
|
2
|
+
require 'logue/core/object_util'
|
|
3
|
+
|
|
4
|
+
module Logue
|
|
5
|
+
class LevelLogger
|
|
6
|
+
attr_accessor :level
|
|
7
|
+
|
|
8
|
+
def initialize level: Level::WARN
|
|
9
|
+
@level = level
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def verbose= v
|
|
13
|
+
@level = case v
|
|
14
|
+
when TrueClass
|
|
15
|
+
Level::DEBUG
|
|
16
|
+
when FalseClass
|
|
17
|
+
Level::FATAL
|
|
18
|
+
else
|
|
19
|
+
v
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def verbose
|
|
24
|
+
@level <= Level::DEBUG
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def quiet?
|
|
28
|
+
@level >= Level::WARN
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def quiet= b
|
|
32
|
+
@level = b ? Level::WARN : Level::DEBUG
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
{ :debug => Level::DEBUG, :info => Level::INFO, :warn => Level::WARN, :error => Level::ERROR, :fatal => Level::FATAL, :write => Level::WARN }.each do |methname, level|
|
|
36
|
+
define_method methname do |msg = ObjectUtil::NONE, obj = nil, classname: nil, &blk|
|
|
37
|
+
log msg, obj, level: level, classname: classname, &blk
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# Logs the given message.
|
|
42
|
+
def log msg = ObjectUtil::NONE, obj = ObjectUtil::NONE, level: Level::DEBUG, classname: nil, &blk
|
|
43
|
+
log_frames msg, obj, classname: classname, level: level, nframes: 0, &blk
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# Writes the current stack, from where this method was invoked.
|
|
47
|
+
def stack msg = ObjectUtil::NONE, obj = ObjectUtil::NONE, level: Level::DEBUG, classname: nil, &blk
|
|
48
|
+
log_frames msg, obj, classname: classname, level: level, nframes: -1, &blk
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def log_frames msg, obj = ObjectUtil::NONE, classname: nil, level: nil, nframes: -1, &blk
|
|
52
|
+
raise "not implemented for LevelLogger"
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module Logue
|
|
2
|
+
class LineMsgObj
|
|
3
|
+
attr_reader :msg
|
|
4
|
+
attr_reader :obj
|
|
5
|
+
|
|
6
|
+
def initialize msg, obj = nil
|
|
7
|
+
@msg = msg
|
|
8
|
+
@obj = obj
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def message_string
|
|
12
|
+
if @obj
|
|
13
|
+
@msg.to_s + ": " + @obj.to_s
|
|
14
|
+
else
|
|
15
|
+
@msg.to_s
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require 'logue/lines/line_msg_block'
|
|
2
|
+
require 'logue/lines/line_msg_obj'
|
|
3
|
+
require 'logue/lines/line_block'
|
|
4
|
+
|
|
5
|
+
module Logue
|
|
6
|
+
class LineFactory
|
|
7
|
+
def create msg, obj, &blk
|
|
8
|
+
if blk
|
|
9
|
+
if msg
|
|
10
|
+
LineMsgBlock.new msg, blk
|
|
11
|
+
else
|
|
12
|
+
LineBlock.new blk
|
|
13
|
+
end
|
|
14
|
+
else
|
|
15
|
+
LineMsgObj.new msg, obj
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require 'logue/lines/line_msg_block'
|
|
2
|
+
require 'logue/lines/line_block'
|
|
3
|
+
require 'logue/lines/line_msg_obj'
|
|
4
|
+
require 'logue/core/base_writer'
|
|
5
|
+
|
|
6
|
+
module Logue
|
|
7
|
+
class LinesWriter < BaseWriter
|
|
8
|
+
def write_msg_obj location, msg, obj, level
|
|
9
|
+
line = LineMsgObj.new msg, obj
|
|
10
|
+
write_line location, line, level
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def write_msg_blk location, msg, level, &blk
|
|
14
|
+
line = LineMsgBlock msg, &blk
|
|
15
|
+
write_line location, line, level
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def write_block location, level, &blk
|
|
19
|
+
line = LineBlock.new blk
|
|
20
|
+
write_line location, line, level
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def write_line location, line, level
|
|
24
|
+
linestr = line.message_string
|
|
25
|
+
lstr = location + " " + linestr
|
|
26
|
+
print lstr, level
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require 'pathname'
|
|
2
|
+
|
|
3
|
+
module Logue
|
|
4
|
+
class Frame
|
|
5
|
+
FRAME_RE = Regexp.new '(.*):(\d+)(?::in \`(.*)\')?'
|
|
6
|
+
|
|
7
|
+
attr_reader :path, :line, :method
|
|
8
|
+
|
|
9
|
+
def initialize entry: nil, path: nil, line: nil, method: nil
|
|
10
|
+
@path = path
|
|
11
|
+
@line = line
|
|
12
|
+
@method = method
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def to_s
|
|
16
|
+
[:path, :line, :method].collect { |field| "#{field}: " + send(field).to_s }.join ", "
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require 'logue/format/location_format'
|
|
2
|
+
|
|
3
|
+
module Logue
|
|
4
|
+
class Location
|
|
5
|
+
attr_reader :path
|
|
6
|
+
attr_reader :line
|
|
7
|
+
attr_reader :cls
|
|
8
|
+
attr_reader :method
|
|
9
|
+
|
|
10
|
+
def initialize path, line, cls, method
|
|
11
|
+
@path = path
|
|
12
|
+
@line = line
|
|
13
|
+
@cls = cls
|
|
14
|
+
@method = method
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -1,24 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
# -*- ruby -*-
|
|
3
|
-
|
|
4
|
-
require 'logue/frame'
|
|
1
|
+
require 'logue/locations/frame'
|
|
5
2
|
|
|
6
3
|
module Logue
|
|
7
4
|
class Stack
|
|
5
|
+
FILTER_RE = Regexp.new 'logue.*/lib/logue'
|
|
6
|
+
|
|
8
7
|
attr_reader :frames
|
|
9
8
|
|
|
10
9
|
def initialize depth: 2
|
|
11
10
|
# caller_locations requires Ruby 2.0+
|
|
12
11
|
locations = caller_locations depth
|
|
13
|
-
@frames = locations
|
|
12
|
+
@frames = locations&.collect do |loc|
|
|
14
13
|
# no absolute_path from "(eval)"
|
|
15
14
|
Frame.new path: loc.absolute_path || loc.path, line: loc.lineno, method: loc.label
|
|
16
15
|
end
|
|
17
16
|
end
|
|
18
17
|
|
|
19
18
|
def filtered
|
|
20
|
-
|
|
21
|
-
logframe = @frames.rindex { |frm| frm.path.index re }
|
|
19
|
+
logframe = @frames.rindex { |frm| frm.path.index FILTER_RE }
|
|
22
20
|
@frames[logframe + 1 .. -1]
|
|
23
21
|
end
|
|
24
22
|
end
|
data/lib/logue/log.rb
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
#
|
|
11
11
|
|
|
12
12
|
require 'logue/logger'
|
|
13
|
+
require 'logue/writer'
|
|
13
14
|
|
|
14
15
|
#
|
|
15
16
|
# == Log
|
|
@@ -46,91 +47,57 @@ require 'logue/logger'
|
|
|
46
47
|
|
|
47
48
|
module Logue
|
|
48
49
|
class Log
|
|
49
|
-
|
|
50
|
+
extend Dynamic
|
|
51
|
+
|
|
52
|
+
def self.reset
|
|
53
|
+
@logger = Logger.new writer: Writer.new
|
|
54
|
+
end
|
|
50
55
|
|
|
51
|
-
|
|
56
|
+
reset
|
|
57
|
+
|
|
58
|
+
# by default, class methods delegate to a single app-wide log.
|
|
52
59
|
|
|
53
60
|
# Returns the app-wide logger of the log.
|
|
54
61
|
def self.logger
|
|
55
62
|
@logger
|
|
56
63
|
end
|
|
57
64
|
|
|
58
|
-
def self.
|
|
59
|
-
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def self.logger_methods
|
|
63
|
-
@logger_delegated ||= Array.new.tap do |ary|
|
|
64
|
-
acc_methods = [
|
|
65
|
-
:colorize_line,
|
|
66
|
-
:format,
|
|
67
|
-
:level,
|
|
68
|
-
:outfile,
|
|
69
|
-
:output,
|
|
70
|
-
:quiet,
|
|
71
|
-
:verbose,
|
|
72
|
-
]
|
|
73
|
-
ary.concat acc_methods.inject(Array.new) { |a, m| a.concat accessors(m) }
|
|
74
|
-
read_methods = [
|
|
75
|
-
:ignore_class,
|
|
76
|
-
:ignore_file,
|
|
77
|
-
:ignore_method,
|
|
78
|
-
:log_class,
|
|
79
|
-
:log_file,
|
|
80
|
-
:log_method,
|
|
81
|
-
:set_color,
|
|
82
|
-
:set_default_widths,
|
|
83
|
-
:set_widths,
|
|
84
|
-
]
|
|
85
|
-
ary.concat read_methods
|
|
86
|
-
logging_methods = [
|
|
87
|
-
:debug,
|
|
88
|
-
:error,
|
|
89
|
-
:fatal,
|
|
90
|
-
:info,
|
|
91
|
-
:log,
|
|
92
|
-
:stack,
|
|
93
|
-
:warn,
|
|
94
|
-
:write,
|
|
95
|
-
]
|
|
96
|
-
ary.concat logging_methods
|
|
97
|
-
end
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
def self.logger_delegated? meth
|
|
101
|
-
self.logger_methods.include? meth
|
|
65
|
+
def self.logger= logger
|
|
66
|
+
@logger = logger
|
|
102
67
|
end
|
|
103
68
|
|
|
104
69
|
def self.methods all = true
|
|
105
|
-
super +
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
def self.has_color? color
|
|
109
|
-
colors.include? color
|
|
70
|
+
super + logger.methods + colors
|
|
110
71
|
end
|
|
111
72
|
|
|
112
73
|
def self.colors
|
|
113
74
|
logger.valid_colors.keys
|
|
114
75
|
end
|
|
115
76
|
|
|
116
|
-
def self.delegated? meth
|
|
117
|
-
logger_delegated?(meth) || has_color?(meth)
|
|
118
|
-
end
|
|
119
|
-
|
|
120
77
|
def self.method_missing meth, *args, &blk
|
|
121
|
-
if
|
|
122
|
-
|
|
78
|
+
if logger.respond_to? meth
|
|
79
|
+
if blk
|
|
80
|
+
add_class_method meth do |*args1, &blk1|
|
|
81
|
+
@logger.send meth, *args1, blk1
|
|
82
|
+
end
|
|
83
|
+
@logger.send meth, *args, &blk
|
|
84
|
+
else
|
|
85
|
+
add_class_method meth do |*args1|
|
|
86
|
+
@logger.send meth, *args1
|
|
87
|
+
end
|
|
88
|
+
@logger.send meth, *args
|
|
89
|
+
end
|
|
123
90
|
else
|
|
124
91
|
super
|
|
125
92
|
end
|
|
126
93
|
end
|
|
127
94
|
|
|
128
95
|
def self.respond_to? meth
|
|
129
|
-
methods.include?
|
|
96
|
+
super || methods.include?(meth)
|
|
130
97
|
end
|
|
131
98
|
|
|
132
|
-
def self.respond_to_missing? *args
|
|
133
|
-
methods.include?
|
|
99
|
+
def self.respond_to_missing? * args
|
|
100
|
+
super || methods.include?(args.first)
|
|
134
101
|
end
|
|
135
102
|
end
|
|
136
103
|
end
|
data/lib/logue/loggable.rb
CHANGED
|
@@ -11,7 +11,8 @@
|
|
|
11
11
|
|
|
12
12
|
require 'logue/logger'
|
|
13
13
|
require 'logue/log'
|
|
14
|
-
require 'logue/
|
|
14
|
+
require 'logue/core/object_util'
|
|
15
|
+
require 'logue/core/base_loggable'
|
|
15
16
|
|
|
16
17
|
#
|
|
17
18
|
# == Loggable
|
|
@@ -37,43 +38,16 @@ require 'logue/colorlog'
|
|
|
37
38
|
# stack "my message"
|
|
38
39
|
#
|
|
39
40
|
# That will produce a stack trace from the given location.
|
|
40
|
-
#
|
|
41
|
+
#
|
|
41
42
|
|
|
42
43
|
module Logue
|
|
43
44
|
module Loggable
|
|
44
|
-
|
|
45
|
-
def add_delegator with_level, methnames
|
|
46
|
-
methnames.each do |methname|
|
|
47
|
-
lines = Array.new.tap do |a|
|
|
48
|
-
if with_level
|
|
49
|
-
a << "def #{methname} msg = '', obj = nil, level = Level::DEBUG, &blk"
|
|
50
|
-
a << " logger.send :#{methname}, msg, obj, level: level, classname: self.class.to_s, &blk"
|
|
51
|
-
else
|
|
52
|
-
a << "def #{methname} msg = '', obj = nil, &blk"
|
|
53
|
-
a << " logger.send :#{methname}, msg, obj, classname: self.class.to_s, &blk"
|
|
54
|
-
end
|
|
55
|
-
a << "end"
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
class_eval lines.join("\n")
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def add_color_methods colors
|
|
63
|
-
colors.each do |color, code|
|
|
64
|
-
class_eval ColorLog.color_method_source(color, code)
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
end
|
|
45
|
+
include BaseLoggable
|
|
68
46
|
|
|
69
47
|
def logger
|
|
70
48
|
@logger ||= Log.logger
|
|
71
49
|
end
|
|
72
50
|
|
|
73
|
-
add_delegator true, [ :log, :stack ]
|
|
74
|
-
add_delegator false, [ :debug, :info, :warn, :error, :fatal, :write ]
|
|
75
|
-
add_color_methods Rainbow::Color::Named::NAMES
|
|
76
|
-
|
|
77
51
|
def logger= logger
|
|
78
52
|
@logger = logger
|
|
79
53
|
end
|