color-console 0.3 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/color_console/java_util_logger.rb +55 -16
- data/lib/color_console/log4r_logger.rb +22 -18
- metadata +12 -11
- checksums.yaml +0 -7
@@ -49,7 +49,10 @@ module Console
|
|
49
49
|
# suitable for output to the console.
|
50
50
|
class RubyFormatter < Formatter
|
51
51
|
|
52
|
-
|
52
|
+
# Default format pattern
|
53
|
+
DEFAULT_FORMAT = '%4$-6s %7$s%5$s'
|
54
|
+
# System line-ending
|
55
|
+
LINE_END = java.lang.String.format('%n')
|
53
56
|
|
54
57
|
# A format string to use when formatting a log record.
|
55
58
|
# @see Java function String.format for the format string syntax. The
|
@@ -59,8 +62,16 @@ module Console
|
|
59
62
|
# - logger_name The name of the logger that logged the record
|
60
63
|
# - level The level of the message
|
61
64
|
# - message The log message
|
62
|
-
# - thrown Any exception that forms part of the log record
|
65
|
+
# - thrown Any exception that forms part of the log record
|
66
|
+
# - spacer A spacer that will consist of 2 spaces if the log level
|
67
|
+
# is config or greater.
|
63
68
|
attr_accessor :format_string
|
69
|
+
# Width at which to split lines
|
70
|
+
attr_accessor :width
|
71
|
+
# Amount by which to indent lines
|
72
|
+
attr_accessor :indent
|
73
|
+
# Level labels
|
74
|
+
attr_reader :level_labels
|
64
75
|
|
65
76
|
|
66
77
|
# Constructs a new formatter for formatting log records according to
|
@@ -68,27 +79,52 @@ module Console
|
|
68
79
|
#
|
69
80
|
# @param format The format string to use when building a String for
|
70
81
|
# logging.
|
71
|
-
def initialize(format = DEFAULT_FORMAT)
|
82
|
+
def initialize(format = DEFAULT_FORMAT, width = nil)
|
72
83
|
super()
|
73
84
|
@format_string = format
|
85
|
+
@width = width || Console.width
|
86
|
+
mark = java.lang.String.format(@format_string, Time.now,
|
87
|
+
'', '', '', '!$!', nil, nil)
|
88
|
+
@indent = mark.lines.first.index('!$!')
|
89
|
+
@level_labels = Hash.new{ |h, k| h[k] = k }
|
90
|
+
@level_labels[JavaUtilLogger::Level::WARNING] = 'WARN'
|
91
|
+
@level_labels[JavaUtilLogger::Level::SEVERE] = 'ERROR'
|
92
|
+
@level_labels[JavaUtilLogger::Level::FINEST] = 'DEBUG'
|
74
93
|
end
|
75
94
|
|
76
95
|
|
77
96
|
# Format a log record and return a string for publishing by a log handler.
|
78
97
|
def format(log_record)
|
79
|
-
lvl =
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
98
|
+
lvl = @level_labels[log_record.level]
|
99
|
+
indent = @indent || 0
|
100
|
+
spacer = ''
|
101
|
+
wrap_width = @width - indent
|
102
|
+
if log_record.level.intValue < JavaUtilLogger::Level::INFO.intValue
|
103
|
+
spacer = ' '
|
104
|
+
wrap_width -= 2
|
105
|
+
end
|
106
|
+
|
107
|
+
msg = wrap_width > 0 ? Console.wrap_text(log_record.message, wrap_width) :
|
108
|
+
[log_record.message]
|
109
|
+
sb = java.lang.StringBuilder.new()
|
110
|
+
msg.each_with_index do |line, i|
|
111
|
+
if i == 0
|
112
|
+
fmt = java.lang.String.format(@format_string,
|
113
|
+
log_record.millis,
|
114
|
+
log_record.logger_name,
|
115
|
+
log_record.logger_name,
|
116
|
+
lvl,
|
117
|
+
msg[i],
|
118
|
+
log_record.thrown,
|
119
|
+
spacer)
|
120
|
+
else
|
121
|
+
fmt = java.lang.String.format(@format_string,
|
122
|
+
log_record.millis, '', '', '', msg[i], nil, spacer)
|
123
|
+
end
|
124
|
+
sb.append(fmt)
|
125
|
+
sb.append(LINE_END) if @width < 0 || fmt.length < @width
|
126
|
+
end
|
127
|
+
sb.toString()
|
92
128
|
end
|
93
129
|
|
94
130
|
end
|
@@ -117,6 +153,9 @@ module Console
|
|
117
153
|
|
118
154
|
# Add a ColorConsoleHandler
|
119
155
|
h = JavaUtilLogger::ColorConsoleHandler.new(format)
|
156
|
+
if lbls = options[:level_labels]
|
157
|
+
h.formatter.level_labels.merge!(lbls)
|
158
|
+
end
|
120
159
|
l.addHandler(h)
|
121
160
|
|
122
161
|
# Set the log level
|
@@ -2,7 +2,7 @@ require 'log4r'
|
|
2
2
|
require_relative '../color_console'
|
3
3
|
|
4
4
|
|
5
|
-
# A module for using our color console for log output with the
|
5
|
+
# A module for using our color console for log output with the Log4r
|
6
6
|
# log framework.
|
7
7
|
module Console
|
8
8
|
|
@@ -22,7 +22,8 @@ module Console
|
|
22
22
|
def format(event)
|
23
23
|
@fg = case event.level
|
24
24
|
when Log4r::INFO then :white
|
25
|
-
when Log4r::
|
25
|
+
when Log4r::CONFIG then :cyan
|
26
|
+
when Log4r::WARNING then :yellow
|
26
27
|
when Log4r::ERROR then :red
|
27
28
|
when Log4r::DEBUG then :dark_gray
|
28
29
|
else :light_gray
|
@@ -33,7 +34,8 @@ module Console
|
|
33
34
|
thread = Log4r::NDC.peek.to_s.upcase[0, 2]
|
34
35
|
level = Log4r::LNAMES[event.level]
|
35
36
|
case
|
36
|
-
when event.data.is_a?(Exception) ||
|
37
|
+
when event.data.is_a?(Exception) || (RUBY_ENGINE == 'jruby' &&
|
38
|
+
event.data.java_kind_of?(java.lang.Throwable))
|
37
39
|
msg = Exception.format(event.data)
|
38
40
|
when event.data.is_a?(Array)
|
39
41
|
msg = event.data
|
@@ -42,17 +44,18 @@ module Console
|
|
42
44
|
when Array then msg[0][0] = "%-8s %-2s %s" % [level, thread, msg[0][0]]
|
43
45
|
end
|
44
46
|
else
|
45
|
-
|
46
|
-
msg =
|
47
|
-
|
48
|
-
|
47
|
+
msg_lines = Console.wrap_text(event.data, @console_width - 13)
|
48
|
+
msg = ""
|
49
|
+
msg_lines.each_with_index do |line, i|
|
50
|
+
fmt = "%-8s %-2s %s" % [[level][i], [thread][i], line]
|
51
|
+
msg += fmt
|
52
|
+
msg += "\n" if @console_width < 0 || fmt.length < @console_width
|
53
|
+
end
|
49
54
|
end
|
50
|
-
msg
|
55
|
+
msg.chomp
|
51
56
|
rescue Object => ex
|
52
|
-
"(Unable to format event.data
|
57
|
+
"(Unable to format event.data due to #{ex})\n"
|
53
58
|
end
|
54
|
-
else
|
55
|
-
""
|
56
59
|
end
|
57
60
|
end
|
58
61
|
|
@@ -60,14 +63,14 @@ module Console
|
|
60
63
|
def write(data)
|
61
64
|
if data.is_a?(Array)
|
62
65
|
if data[0].is_a?(String) && (data.length == 0 || data[1].is_a?(Symbol))
|
63
|
-
Console.puts
|
66
|
+
Console.puts(*data)
|
64
67
|
else
|
65
68
|
data.each do |chunk|
|
66
|
-
Console.write
|
69
|
+
Console.write(*chunk)
|
67
70
|
end
|
68
71
|
Console.puts
|
69
72
|
end
|
70
|
-
|
73
|
+
elsif data
|
71
74
|
Console.puts(data, @fg)
|
72
75
|
end
|
73
76
|
end
|
@@ -91,14 +94,15 @@ module Console
|
|
91
94
|
level = case options.delete(:level)
|
92
95
|
when String, Symbol then Log4r::LNAMES.index(options[:level].to_s.upcase)
|
93
96
|
end
|
94
|
-
STDOUT.puts level
|
95
97
|
|
96
|
-
# Remove any existing console handler
|
97
98
|
log = logger ? Log4r::Logger[logger] : Log4r::Logger.root
|
98
99
|
log = Log4r::Logger.new(logger) unless log
|
99
100
|
|
100
|
-
|
101
|
-
|
101
|
+
# Remove any existing console handler
|
102
|
+
Log4r::Logger.each_logger do |l|
|
103
|
+
l.outputters.each do |o|
|
104
|
+
l.remove(o.name) if o.is_a?(Log4r::StdoutOutputter)
|
105
|
+
end
|
102
106
|
end
|
103
107
|
|
104
108
|
# Add a ColorConsoleHandler
|
metadata
CHANGED
@@ -1,19 +1,19 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: color-console
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 0.3.2
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Adam Gardiner
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2015-05-28 00:00:00.000000000 Z
|
12
13
|
dependencies: []
|
13
|
-
description:
|
14
|
-
|
15
|
-
|
16
|
-
messages and progress bars.
|
14
|
+
description: ! " ColorConsole supports cross-platform (ANSI and Windows) colored
|
15
|
+
text output to the console.\n It also provides useful methods for building
|
16
|
+
command-line interfaces that provide status\n messages and progress bars.\n"
|
17
17
|
email: adam.b.gardiner@gmail.com
|
18
18
|
executables: []
|
19
19
|
extensions: []
|
@@ -34,26 +34,27 @@ files:
|
|
34
34
|
- lib/color_console.rb
|
35
35
|
homepage: https://github.com/agardiner/color-console
|
36
36
|
licenses: []
|
37
|
-
metadata: {}
|
38
37
|
post_install_message:
|
39
38
|
rdoc_options: []
|
40
39
|
require_paths:
|
41
40
|
- lib
|
42
41
|
required_ruby_version: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
43
|
requirements:
|
44
|
-
- - '>='
|
44
|
+
- - ! '>='
|
45
45
|
- !ruby/object:Gem::Version
|
46
46
|
version: '0'
|
47
47
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
48
|
+
none: false
|
48
49
|
requirements:
|
49
|
-
- - '>='
|
50
|
+
- - ! '>='
|
50
51
|
- !ruby/object:Gem::Version
|
51
52
|
version: '0'
|
52
53
|
requirements: []
|
53
54
|
rubyforge_project:
|
54
|
-
rubygems_version:
|
55
|
+
rubygems_version: 1.8.21
|
55
56
|
signing_key:
|
56
|
-
specification_version:
|
57
|
+
specification_version: 3
|
57
58
|
summary: ColorConsole is a cross-platform library for outputting colored text to the
|
58
59
|
console
|
59
60
|
test_files: []
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: eac6c2a764d6f516366d6f5e8470d2ed3b63170d
|
4
|
-
data.tar.gz: aa2c094cf2ad8961fda8bdc3a74c484e0752bab5
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: 118c4ed399645b94a34d071314f3c0716048ca7044522421cb79b73c337992eab90f41e1326c4983c54d10f90c844fffef86982aa8508022b6ae77cc06b65b60
|
7
|
-
data.tar.gz: 3d60e42deccc08d8e9a9b318e8832b93413410dd9dc7390992fc92bc6ac9cc45a838d258acef608aed02af18fd37457bd7c8730b64cc0201f5f090de35dc3193
|