dldinternet-mixlib-logging 0.1.4 → 0.1.5
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 +8 -8
- data/lib/dldinternet/mixlib/logging.rb +211 -205
- data/lib/dldinternet/mixlib/logging/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZGNiYzY2YjhhOWYxYTlkMjFiMmQxZmUyYzE1ZTE3YjY4ZjhhMTYwNw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZDVhZDQ1MTYyMzk1ZWZlYzVkNmIwNGFjM2JkYzYzZjg0N2M0YzI2Mw==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
M2ZhZDU0MDE5NGE1MGNlOGQyODdlMjUxMjYwN2NjOTMxODc3YzA4ZjA4YTAw
|
10
|
+
MjA3NTA3NjBmYzBkMmM0MDk3M2Y5NzdmYmJkNmI4ZmIyOGI1MGI5ZGYwMmI4
|
11
|
+
MTA0NGJlYjRkM2NhYTk2OTExM2I4NzVkMWM1Zjc3Yzk5YTNlMmY=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
OTg4Yzc3YzVjYjg1MWMyNDdmNjY5MTliNzFlNmZlNThjMDBhYmJiNWVkM2Q1
|
14
|
+
MzVmMjZjZjRiMTc2YjJkNWM2NjNmYmE3MmNjMmJlMWY4ZDk0ZTZjMTA2NWIy
|
15
|
+
ZjllZjNiZTYwYzAxNDA5MmM5MzIyN2RmM2YwYjg1M2NjMTIzOGM=
|
@@ -1,34 +1,36 @@
|
|
1
|
-
|
1
|
+
unless defined? ::DLDInternet::Mixlib::Logging::ClassMethods
|
2
2
|
|
3
|
-
|
4
|
-
module Mixlib
|
5
|
-
module Logging
|
3
|
+
require 'dldinternet/mixlib/logging/version'
|
6
4
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
require 'logging'
|
5
|
+
module DLDInternet
|
6
|
+
module Mixlib
|
7
|
+
module Logging
|
11
8
|
|
12
|
-
|
13
|
-
|
14
|
-
|
9
|
+
require "rubygems"
|
10
|
+
require 'rubygems/gem_runner'
|
11
|
+
require 'rubygems/exceptions'
|
12
|
+
require 'logging'
|
13
|
+
|
14
|
+
class ::Logging::ColorScheme
|
15
|
+
def scheme
|
16
|
+
@scheme
|
17
|
+
end
|
15
18
|
end
|
16
|
-
end
|
17
19
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
20
|
+
class ::Logging::Logger
|
21
|
+
class << self
|
22
|
+
def define_log_methods( logger )
|
23
|
+
::Logging::LEVELS.each do |name,num|
|
24
|
+
code = "undef :#{name} if method_defined? :#{name}\n"
|
25
|
+
code << "undef :#{name}? if method_defined? :#{name}?\n"
|
24
26
|
|
25
|
-
|
26
|
-
|
27
|
+
if logger.level > num
|
28
|
+
code << <<-CODE
|
27
29
|
def #{name}?( ) false end
|
28
30
|
def #{name}( data = nil, trace = false ) false end
|
29
|
-
|
30
|
-
|
31
|
-
|
31
|
+
CODE
|
32
|
+
else
|
33
|
+
code << <<-CODE
|
32
34
|
def #{name}?( ) true end
|
33
35
|
def #{name}( data = nil, trace = nil )
|
34
36
|
caller = Kernel.caller[3]
|
@@ -43,215 +45,219 @@ module DLDInternet
|
|
43
45
|
end
|
44
46
|
true
|
45
47
|
end
|
46
|
-
|
47
|
-
|
48
|
+
CODE
|
49
|
+
end
|
48
50
|
|
49
|
-
|
51
|
+
logger._meta_eval(code, __FILE__, __LINE__)
|
52
|
+
end
|
53
|
+
logger
|
50
54
|
end
|
51
|
-
|
55
|
+
end
|
56
|
+
|
57
|
+
def logEvent(evt)
|
58
|
+
log_event evt
|
52
59
|
end
|
53
60
|
end
|
54
61
|
|
55
|
-
|
56
|
-
|
62
|
+
class ::Logging::Layouts::Pattern
|
63
|
+
# Arguments to sprintf keyed to directive letters
|
64
|
+
verbose, $VERBOSE = $VERBOSE, nil
|
65
|
+
# noinspection RubyStringKeysInHashInspection
|
66
|
+
DIRECTIVE_TABLE = {
|
67
|
+
'c' => 'event.logger'.freeze,
|
68
|
+
'd' => 'format_date(event.time)'.freeze,
|
69
|
+
'F' => 'event.file'.freeze,
|
70
|
+
'l' => '::Logging::LNAMES[event.level]'.freeze,
|
71
|
+
'L' => 'event.line'.freeze,
|
72
|
+
'm' => 'format_obj(event.data)'.freeze,
|
73
|
+
'M' => 'event.method'.freeze,
|
74
|
+
'p' => 'Process.pid'.freeze,
|
75
|
+
'r' => 'Integer((event.time-@created_at)*1000).to_s'.freeze,
|
76
|
+
't' => 'Thread.current.object_id.to_s'.freeze,
|
77
|
+
'T' => 'Thread.current[:name]'.freeze,
|
78
|
+
'C' => 'event.file != "" ? "(\e[38;5;25m#{event.file}::#{event.line}\e[0m)" : ""',
|
79
|
+
'%' => :placeholder
|
80
|
+
}.freeze
|
81
|
+
|
82
|
+
# Human name aliases for directives - used for colorization of tokens
|
83
|
+
# noinspection RubyStringKeysInHashInspection
|
84
|
+
COLOR_ALIAS_TABLE = {
|
85
|
+
'c' => :logger,
|
86
|
+
'd' => :date,
|
87
|
+
'm' => :message,
|
88
|
+
'p' => :pid,
|
89
|
+
'r' => :time,
|
90
|
+
'T' => :thread,
|
91
|
+
't' => :thread_id,
|
92
|
+
'F' => :file,
|
93
|
+
'L' => :line,
|
94
|
+
'M' => :method,
|
95
|
+
'X' => :mdc,
|
96
|
+
'x' => :ndc,
|
97
|
+
'C' => :file_line,
|
98
|
+
}.freeze
|
99
|
+
|
100
|
+
ensure
|
101
|
+
$VERBOSE = verbose
|
57
102
|
end
|
58
|
-
end
|
59
103
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
'F' => 'event.file'.freeze,
|
68
|
-
'l' => '::Logging::LNAMES[event.level]'.freeze,
|
69
|
-
'L' => 'event.line'.freeze,
|
70
|
-
'm' => 'format_obj(event.data)'.freeze,
|
71
|
-
'M' => 'event.method'.freeze,
|
72
|
-
'p' => 'Process.pid'.freeze,
|
73
|
-
'r' => 'Integer((event.time-@created_at)*1000).to_s'.freeze,
|
74
|
-
't' => 'Thread.current.object_id.to_s'.freeze,
|
75
|
-
'T' => 'Thread.current[:name]'.freeze,
|
76
|
-
'C' => 'event.file != "" ? "(\e[38;5;25m#{event.file}::#{event.line}\e[0m)" : ""',
|
77
|
-
'%' => :placeholder
|
78
|
-
}.freeze
|
79
|
-
|
80
|
-
# Human name aliases for directives - used for colorization of tokens
|
81
|
-
# noinspection RubyStringKeysInHashInspection
|
82
|
-
COLOR_ALIAS_TABLE = {
|
83
|
-
'c' => :logger,
|
84
|
-
'd' => :date,
|
85
|
-
'm' => :message,
|
86
|
-
'p' => :pid,
|
87
|
-
'r' => :time,
|
88
|
-
'T' => :thread,
|
89
|
-
't' => :thread_id,
|
90
|
-
'F' => :file,
|
91
|
-
'L' => :line,
|
92
|
-
'M' => :method,
|
93
|
-
'X' => :mdc,
|
94
|
-
'x' => :ndc,
|
95
|
-
'C' => :file_line,
|
96
|
-
}.freeze
|
97
|
-
|
98
|
-
ensure
|
99
|
-
$VERBOSE = verbose
|
100
|
-
end
|
104
|
+
class FakeLogger
|
105
|
+
def method_missing(m, *args, &block)
|
106
|
+
puts args[0]
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
module ClassMethods
|
101
111
|
|
102
|
-
class FakeLogger
|
103
|
-
def method_missing(m, *args, &block)
|
104
|
-
puts args[0]
|
105
112
|
end
|
106
|
-
end
|
107
113
|
|
114
|
+
attr :logger
|
115
|
+
attr_reader :args
|
116
|
+
attr_reader :step
|
117
|
+
attr_reader :TODO
|
108
118
|
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
#
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
file =
|
132
|
-
line = Integer(match[2])
|
133
|
-
modl = match[3] unless match[3].nil?
|
134
|
-
|
135
|
-
unless @TODO["#{file}::#{line}"]
|
136
|
-
le = ::Logging::LogEvent.new(@logger, ::Logging::LEVELS['todo'], msg, false)
|
137
|
-
@logger.logEvent(le)
|
138
|
-
@TODO["#{file}::#{line}"] = true
|
139
|
-
end
|
119
|
+
# --------------------------------------------------------------------------------
|
120
|
+
def logTodo(msg)
|
121
|
+
|
122
|
+
# Regular expression used to parse out caller information
|
123
|
+
#
|
124
|
+
# * $1 == filename
|
125
|
+
# * $2 == line number
|
126
|
+
# * $3 == method name (might be nil)
|
127
|
+
caller_rgxp = %r/([-\.\/\(\)\w]+):(\d+)(?::in `(\w+)')?/o
|
128
|
+
#CALLER_INDEX = 2
|
129
|
+
caller_index = ((defined? JRUBY_VERSION and JRUBY_VERSION[%r/^1.6/]) or (defined? RUBY_ENGINE and RUBY_ENGINE[%r/^rbx/i])) ? 0 : 0
|
130
|
+
stack = Kernel.caller
|
131
|
+
return if stack.nil?
|
132
|
+
|
133
|
+
match = caller_rgxp.match(stack[caller_index])
|
134
|
+
file = match[1]
|
135
|
+
line = Integer(match[2])
|
136
|
+
modl = match[3] unless match[3].nil?
|
137
|
+
|
138
|
+
unless @TODO["#{file}::#{line}"]
|
139
|
+
le = ::Logging::LogEvent.new(@logger, ::Logging::LEVELS['todo'], msg, false)
|
140
|
+
@logger.logEvent(le)
|
141
|
+
@TODO["#{file}::#{line}"] = true
|
140
142
|
end
|
143
|
+
end
|
141
144
|
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
end
|
145
|
+
# -----------------------------------------------------------------------------
|
146
|
+
def logStep(msg)
|
147
|
+
logger = getLogger(@args, 'logStep')
|
148
|
+
if logger
|
149
|
+
logger.step "Resource #{@step+=1}: #{msg} ..."
|
148
150
|
end
|
151
|
+
end
|
149
152
|
|
150
|
-
|
151
|
-
|
153
|
+
# -----------------------------------------------------------------------------
|
154
|
+
# Set up logger
|
152
155
|
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
+
def setLogger(logger)
|
157
|
+
@logger = logger
|
158
|
+
end
|
156
159
|
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
160
|
+
def getLogger(args,from='',alogger=nil)
|
161
|
+
logger = alogger || @logger
|
162
|
+
unless logger
|
163
|
+
unless from==''
|
164
|
+
from = "#{from} - "
|
165
|
+
end
|
166
|
+
@step = 0
|
167
|
+
if args
|
168
|
+
if args.key?(:log_file) and args[:log_file]
|
169
|
+
args[:log_path] = File.dirname(args[:log_file])
|
170
|
+
elsif args[:my_name]
|
171
|
+
if args[:log_path]
|
172
|
+
args[:log_file] = "#{args[:log_path]}/#{args[:my_name]}.log"
|
173
|
+
else
|
174
|
+
args[:log_file] = "/tmp/#{args[:my_name]}.log"
|
175
|
+
end
|
162
176
|
end
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
177
|
+
|
178
|
+
begin
|
179
|
+
::Logging.init :trace, :debug, :info, :step, :warn, :error, :fatal, :todo unless defined? ::Logging::MAX_LEVEL_LENGTH
|
180
|
+
if args[:origins] and args[:origins][:log_level]
|
181
|
+
if (::Logging::LEVELS[args[:log_level].to_s] and ::Logging::LEVELS[args[:log_level].to_s] < 2)
|
182
|
+
#puts "#{args[:log_level].to_s} = #{::Logging::LEVELS[args[:log_level].to_s]}".light_yellow
|
183
|
+
puts "#{args[:origins][:log_level]} says #{args[:log_level]}".light_yellow
|
170
184
|
else
|
171
|
-
|
185
|
+
from = ''
|
172
186
|
end
|
173
187
|
end
|
188
|
+
l_opts = args[:log_opts].call(::Logging::MAX_LEVEL_LENGTH) || {
|
189
|
+
:pattern => "#{from}%d %#{::Logging::MAX_LEVEL_LENGTH}l: %m\n",
|
190
|
+
:date_pattern => '%Y-%m-%d %H:%M:%S',
|
191
|
+
}
|
192
|
+
logger = ::Logging.logger( STDOUT, l_opts)
|
193
|
+
l_opts = args[:log_opts].call(::Logging::MAX_LEVEL_LENGTH) || {
|
194
|
+
:pattern => "#{from}%d %#{::Logging::MAX_LEVEL_LENGTH}l: %m %C\n",
|
195
|
+
:date_pattern => '%Y-%m-%d %H:%M:%S',
|
196
|
+
}
|
197
|
+
layout = ::Logging::Layouts::Pattern.new(l_opts)
|
174
198
|
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
else
|
182
|
-
from = ''
|
183
|
-
end
|
184
|
-
end
|
185
|
-
l_opts = args[:log_opts].call(::Logging::MAX_LEVEL_LENGTH) || {
|
186
|
-
:pattern => "#{from}%d %#{::Logging::MAX_LEVEL_LENGTH}l: %m\n",
|
187
|
-
:date_pattern => '%Y-%m-%d %H:%M:%S',
|
188
|
-
}
|
189
|
-
logger = ::Logging.logger( STDOUT, l_opts)
|
190
|
-
l_opts = args[:log_opts].call(::Logging::MAX_LEVEL_LENGTH) || {
|
191
|
-
:pattern => "#{from}%d %#{::Logging::MAX_LEVEL_LENGTH}l: %m %C\n",
|
192
|
-
:date_pattern => '%Y-%m-%d %H:%M:%S',
|
193
|
-
}
|
194
|
-
layout = ::Logging::Layouts::Pattern.new(l_opts)
|
195
|
-
|
196
|
-
if args[:log_file] and args[:log_file].instance_of?(String)
|
197
|
-
dev = args[:log_file]
|
198
|
-
a_opts = Hash.new
|
199
|
-
a_opts[:filename] = dev
|
200
|
-
a_opts[:layout] = layout
|
201
|
-
a_opts.merge! l_opts
|
202
|
-
|
203
|
-
name = case dev
|
204
|
-
when String; dev
|
205
|
-
when File; dev.path
|
206
|
-
else dev.object_id.to_s end
|
207
|
-
|
208
|
-
appender =
|
209
|
-
case dev
|
210
|
-
when String
|
211
|
-
::Logging::Appenders::RollingFile.new(name, a_opts)
|
212
|
-
else
|
213
|
-
::Logging::Appenders::IO.new(name, dev, a_opts)
|
214
|
-
end
|
215
|
-
logger.add_appenders appender
|
216
|
-
end
|
199
|
+
if args[:log_file] and args[:log_file].instance_of?(String)
|
200
|
+
dev = args[:log_file]
|
201
|
+
a_opts = Hash.new
|
202
|
+
a_opts[:filename] = dev
|
203
|
+
a_opts[:layout] = layout
|
204
|
+
a_opts.merge! l_opts
|
217
205
|
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
:step => :green,
|
223
|
-
:warn => :yellow,
|
224
|
-
:error => :red,
|
225
|
-
:fatal => [:red, :on_white],
|
226
|
-
:todo => :purple,
|
227
|
-
}).scheme
|
228
|
-
scheme[:todo] = "\e[38;5;55m"
|
229
|
-
l_opts[:color_scheme] = 'christo'
|
230
|
-
layout = ::Logging::Layouts::Pattern.new(l_opts)
|
231
|
-
|
232
|
-
appender = logger.appenders[0]
|
233
|
-
appender.layout = layout
|
234
|
-
logger.remove_appenders appender
|
235
|
-
logger.add_appenders appender
|
206
|
+
name = case dev
|
207
|
+
when String; dev
|
208
|
+
when File; dev.path
|
209
|
+
else dev.object_id.to_s end
|
236
210
|
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
logger
|
211
|
+
appender =
|
212
|
+
case dev
|
213
|
+
when String
|
214
|
+
::Logging::Appenders::RollingFile.new(name, a_opts)
|
215
|
+
else
|
216
|
+
::Logging::Appenders::IO.new(name, dev, a_opts)
|
217
|
+
end
|
218
|
+
logger.add_appenders appender
|
245
219
|
end
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
220
|
+
|
221
|
+
scheme = ::Logging::ColorScheme.new( 'christo', :levels => {
|
222
|
+
:trace => [:blue, :on_white],
|
223
|
+
:debug => :cyan,
|
224
|
+
:info => :green,
|
225
|
+
:step => :green,
|
226
|
+
:warn => :yellow,
|
227
|
+
:error => :red,
|
228
|
+
:fatal => [:red, :on_white],
|
229
|
+
:todo => :purple,
|
230
|
+
}).scheme
|
231
|
+
scheme[:todo] = "\e[38;5;55m"
|
232
|
+
l_opts[:color_scheme] = 'christo'
|
233
|
+
layout = ::Logging::Layouts::Pattern.new(l_opts)
|
234
|
+
|
235
|
+
appender = logger.appenders[0]
|
236
|
+
appender.layout = layout
|
237
|
+
logger.remove_appenders appender
|
238
|
+
logger.add_appenders appender
|
239
|
+
|
240
|
+
logger.level = args[:log_level] ? args[:log_level] : :warn
|
241
|
+
logger.trace = true if args[:trace]
|
242
|
+
@args = args
|
243
|
+
rescue Gem::LoadError
|
244
|
+
logger = FakeLogger.new
|
245
|
+
rescue => e
|
246
|
+
# not installed
|
247
|
+
logger = FakeLogger.new
|
248
|
+
end
|
249
|
+
@TODO = {} if @TODO.nil?
|
250
|
+
end # if args
|
251
|
+
@logger = alogger || logger
|
252
|
+
end # unless logger
|
253
|
+
logger
|
254
|
+
end # getLogger
|
255
|
+
|
256
|
+
def included(includer)
|
257
|
+
includer.extend(ClassMethods)
|
252
258
|
end
|
253
259
|
end
|
254
260
|
end
|
255
261
|
end
|
256
|
-
end
|
257
262
|
|
263
|
+
end # unless defined?
|