semantic_logger 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
@@ -51,7 +51,7 @@ module SemanticLogger
|
|
51
51
|
end
|
52
52
|
|
53
53
|
str = "#{log.time.strftime("%Y-%m-%d %H:%M:%S")}.#{"%03d" % (log.time.usec/1000)} #{log.level.to_s[0..0].upcase} [#{$$}:#{log.thread_name}] #{log.name} -- #{message}\n"
|
54
|
-
str << " (#{log.duration}ms)" if log.duration
|
54
|
+
str << " (#{'%.1f' % log.duration}ms)" if log.duration
|
55
55
|
str
|
56
56
|
end
|
57
57
|
end
|
@@ -108,13 +108,21 @@ module SemanticLogger
|
|
108
108
|
@level_index <= #{index}
|
109
109
|
end
|
110
110
|
|
111
|
+
# Log the duration of the supplied block
|
112
|
+
# If an exception occurs in the block the exception is logged using the
|
113
|
+
# same log level. The exception will flow through to the caller unchanged
|
111
114
|
def benchmark_#{level}(message, payload = nil)
|
112
115
|
raise "Mandatory block missing" unless block_given?
|
113
116
|
if @level_index <= #{index}
|
114
117
|
start = Time.now
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
+
begin
|
119
|
+
result = yield
|
120
|
+
self.class.queue << Log.new(:#{level}, self.class.thread_name, name, message, payload, start, Time.now - start)
|
121
|
+
result
|
122
|
+
rescue Exception => exc
|
123
|
+
self.class.queue << Log.new(:#{level}, self.class.thread_name, name, message, exc, start, Time.now - start)
|
124
|
+
raise exc
|
125
|
+
end
|
118
126
|
else
|
119
127
|
yield
|
120
128
|
end
|
@@ -216,7 +224,7 @@ module SemanticLogger
|
|
216
224
|
# #TODO Logger needs it's own "reliable" appender ;)
|
217
225
|
# For example if an appender constantly fails
|
218
226
|
# ( bad filename or path, invalid server )
|
219
|
-
logger.debug "SemanticLogger::Logger Appender
|
227
|
+
logger.debug "SemanticLogger::Logger Appender thread started"
|
220
228
|
while message=queue.pop
|
221
229
|
if message.is_a? Log
|
222
230
|
appenders.each {|appender| appender.log(message) }
|
@@ -235,10 +243,11 @@ module SemanticLogger
|
|
235
243
|
end
|
236
244
|
end
|
237
245
|
rescue Exception => exception
|
238
|
-
logger.
|
239
|
-
|
246
|
+
logger.error "SemanticLogger::Logger Appender thread restarting due to exception: #{exception.class}: #{exception.message}\n#{(exception.backtrace || []).join("\n")}"
|
247
|
+
# Start a new appender thread and let this one terminate
|
248
|
+
startup
|
240
249
|
ensure
|
241
|
-
logger.debug "SemanticLogger::Logger Appender
|
250
|
+
logger.debug "SemanticLogger::Logger Appender thread stopped"
|
242
251
|
end
|
243
252
|
end
|
244
253
|
end
|
@@ -250,7 +259,11 @@ module SemanticLogger
|
|
250
259
|
logger.debug "SemanticLogger::Logger Shutdown. Stopping appender thread"
|
251
260
|
reply_queue = Queue.new
|
252
261
|
queue << { :command => :shutdown, :reply_queue => reply_queue }
|
253
|
-
reply_queue.pop
|
262
|
+
result = reply_queue.pop
|
263
|
+
# Undefine the class variable for the queue since in test environments
|
264
|
+
# at_exit can be invoked multiple times
|
265
|
+
remove_class_variable(:@@queue)
|
266
|
+
result
|
254
267
|
end
|
255
268
|
|
256
269
|
end
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
7
|
+
- 2
|
8
8
|
- 0
|
9
|
-
version: 0.
|
9
|
+
version: 0.2.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Reid Morrison
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2012-08-
|
17
|
+
date: 2012-08-20 00:00:00 -04:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|