logjam_agent 0.1.3 → 0.2.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.
@@ -23,7 +23,7 @@ module LogjamAgent
23
23
  end
24
24
 
25
25
  # TODO: mutex!
26
- def send(msg, engine)
26
+ def forward(msg, engine)
27
27
  return if paused? || LogjamAgent.disabled
28
28
  begin
29
29
  # $stderr.puts msg
@@ -14,33 +14,39 @@ module LogjamAgent
14
14
  @formatter = lambda{|_, _, _, message| message}
15
15
  end
16
16
 
17
+ def request
18
+ Thread.current[:logjam_request]
19
+ end
20
+
21
+ def request=(request)
22
+ Thread.current[:logjam_request] = request
23
+ end
24
+
17
25
  def start_request(app, env, initial_fields={})
18
- Thread.current[:logjam_request] = Request.new(app, env, self, initial_fields)
26
+ self.request = Request.new(app, env, self, initial_fields)
19
27
  end
20
28
 
21
29
  def finish_request(additional_fields={})
22
- # puts "finishing request"
23
30
  if request = self.request
24
31
  request.fields.merge!(additional_fields)
25
- Thread.current[:logjam_request] = nil
32
+ self.request = nil
26
33
  request.forward
27
34
  end
28
35
  end
29
36
 
30
- def request
31
- Thread.current[:logjam_request]
32
- end
33
-
34
37
  def add(severity, message = nil, progname = nil, &block)
35
38
  return if @level > severity
36
- message = (message || (block && block.call) || '').to_s
39
+ request = self.request
40
+ if message.is_a?(Exception)
41
+ request.add_exception(message) if request
42
+ message = format_exception(message)
43
+ else
44
+ message = (message || (block && block.call) || '').to_s
45
+ end
37
46
  time = Time.now
38
47
  buffer << formatter.call(severity, time, progname, message) << "\n"
39
48
  auto_flush
40
- if request = self.request
41
- # puts "adding line to request"
42
- request.add_line(severity, time, message)
43
- end
49
+ request.add_line(severity, time, message) if request
44
50
  message
45
51
  end
46
52
 
@@ -48,5 +54,17 @@ module LogjamAgent
48
54
  raise "cannot connect logger to new log device" unless log_device.respond_to?(:write)
49
55
  @log = log_device
50
56
  end
57
+
58
+ private
59
+
60
+ def format_exception(exception)
61
+ msg = "#{exception.class} : #{exception.message}"
62
+ if backtrace = exception.backtrace
63
+ backtrace = Rails.backtrace_cleaner.clean(backtrace, :all) if defined?(Rails)
64
+ msg << "\n #{backtrace.join("\n ")}"
65
+ else
66
+ msg
67
+ end
68
+ end
51
69
  end
52
70
  end
@@ -15,5 +15,9 @@ module LogjamAgent
15
15
  def reset
16
16
  @@forwarders.each_value {|f| f.reset}
17
17
  end
18
+
19
+ def inspect
20
+ super + ": #{@@forwarders.inspect}"
21
+ end
18
22
  end
19
23
  end
@@ -18,9 +18,13 @@ module LogjamAgent
18
18
  @lines << [severity, format_time(timestamp), message.strip]
19
19
  end
20
20
 
21
+ def add_exception(exception)
22
+ ((@fields[:exceptions] ||= []) << exception.class.to_s).uniq!
23
+ end
24
+
21
25
  def forward
22
26
  engine = @fields.delete(:engine)
23
- @forwarder.send(@fields.to_json, engine)
27
+ @forwarder.forward(@fields.to_json, engine)
24
28
  rescue Exception => e
25
29
  handle_forwarding_error(e)
26
30
  end
@@ -29,7 +33,7 @@ module LogjamAgent
29
33
 
30
34
  def format_time(t)
31
35
  # iso time with microseconds
32
- t.strftime("%Y-%m-%dT%H:%M:%S.#{t.usec}")
36
+ t.strftime("%Y-%m-%dT%H:%M:%S.#{"%06d" % t.usec}")
33
37
  end
34
38
 
35
39
  def handle_forwarding_error(exception)
@@ -17,7 +17,7 @@ module LogjamAgent
17
17
  end
18
18
 
19
19
  def format_time(timestamp)
20
- timestamp.strftime("%b %d %H:%M:%S.#{timestamp.usec}")
20
+ timestamp.strftime("%b %d %H:%M:%S.#{"%06d" % timestamp.usec}")
21
21
  end
22
22
 
23
23
  def format_message(msg)
@@ -1,3 +1,3 @@
1
1
  module LogjamAgent
2
- VERSION = "0.1.3"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logjam_agent
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 1
9
- - 3
10
- version: 0.1.3
8
+ - 2
9
+ - 0
10
+ version: 0.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Stefan Kaes
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-09-12 00:00:00 +02:00
18
+ date: 2011-09-23 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency