logporter 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,4 +1,5 @@
1
1
  require "logporter/namespace"
2
+ require "time" # for Time.strptime
2
3
 
3
4
  module LogPorter::Protocol::Syslog3164
4
5
  def syslog3164_init
@@ -32,7 +33,9 @@ module LogPorter::Protocol::Syslog3164
32
33
  if m
33
34
  # RFC3164 section 4.3.3 No PRI or Unidentifiable PRI
34
35
  event.pri = m[1] || "13"
35
- event.timestamp = m[2]
36
+
37
+ # TODO(sissel): DateTime is a very slow library, consider alternatives?
38
+ event.timestamp = Time.strptime(m[2], "%b %d %H:%M:%S")
36
39
  event.hostname = m[3]
37
40
  event.message = m[4]
38
41
  return true
@@ -1,6 +1,7 @@
1
1
  require "logporter/namespace"
2
2
  require "logporter/server/connection"
3
3
  require "logporter/server/defaulthandler"
4
+ require "logger"
4
5
 
5
6
  class LogPorter::Server
6
7
 
@@ -23,6 +24,9 @@ class LogPorter::Server
23
24
  # This is a hash
24
25
  attr_reader :attributes
25
26
 
27
+ # The logger object
28
+ attr_accessor :logger
29
+
26
30
  # Create a new server to listen with
27
31
  # 'options' is a hash of:
28
32
  #
@@ -31,6 +35,7 @@ class LogPorter::Server
31
35
  # :wire => the wire format (:raw, :syslog)
32
36
  # :handler => the handler instance. Must respond to 'receive_event'
33
37
  def initialize(options)
38
+ @logger = Logger.new(STDOUT)
34
39
  @network = options[:net]
35
40
  @port = options[:port] || 514
36
41
  @wire = options[:wire] || :raw
@@ -57,25 +62,32 @@ class LogPorter::Server
57
62
  # s.start
58
63
  #
59
64
  # EventMachine.run()
60
- EventMachine.next_tick do
61
- puts "Starting #{@network}/#{@port}"
62
- begin
63
- case @network
64
- when :udp; start_udp_server
65
- when :tcp; start_tcp_server
66
- when :tls; start_tcp_server # tls is handled by tcp.
67
- else
68
- raise "Unknown network '#{@network}' expected :udp, :tcp, or :tls"
69
- end
70
- rescue => e
71
- if @handler.respond_to?(:receive_exception)
72
- @handler.receive_exception(e)
65
+ if EventMachine.reactor_running?
66
+ _start
67
+ else
68
+ EventMachine.next_tick { _start }
69
+ end
70
+ end # def start
71
+
72
+ private
73
+ def _start
74
+ @logger.info "Starting #{@network}/#{@port}"
75
+ begin
76
+ case @network
77
+ when :udp; start_udp_server
78
+ when :tcp; start_tcp_server
79
+ when :tls; start_tcp_server # tls is handled by tcp.
73
80
  else
74
- raise e
75
- end
81
+ raise "Unknown network '#{@network}' expected :udp, :tcp, or :tls"
82
+ end
83
+ rescue => e
84
+ if @handler.respond_to?(:receive_exception)
85
+ @handler.receive_exception(e, self)
86
+ else
87
+ raise e
76
88
  end
77
89
  end
78
- end # def start
90
+ end # def _start
79
91
 
80
92
  private
81
93
  def start_udp_server
@@ -93,10 +105,11 @@ class LogPorter::Server
93
105
  public
94
106
  def receive_event(event, client_addr, client_port)
95
107
  @handler.receive_event(event, self, client_addr, client_port)
96
- end
108
+ end # def receive_event
97
109
 
98
110
  public
99
111
  def stop
112
+ @logger.info "Stopping #{@network}/#{@port}"
100
113
  case @network
101
114
  when :tcp
102
115
  EventMachine::stop_server(@socket)
@@ -46,6 +46,8 @@ class LogPorter::Server::Connection < EventMachine::Connection
46
46
  raise "Unsupported protocol #{@server.protocol}"
47
47
  end
48
48
 
49
+ #@server.logger.error "Exception: #{e.inspect}"
50
+ #@server.logger.error "Backtrace: #{e.backtrace}"
49
51
  if @server.network != :udp
50
52
  peer = get_peername
51
53
  if peer.is_a?(Array) # new em-netty::Connection.get_peername
@@ -115,8 +117,8 @@ class LogPorter::Server::Connection < EventMachine::Connection
115
117
  def stats
116
118
  @start ||= Time.now
117
119
  @count += 1
118
- if @count % 50000 == 0
119
- puts "Rate: #{@count / (Time.now - @start)}"
120
+ if (Time.now - @start) > 10
121
+ @server.logger.info "Rate: #{@count / (Time.now - @start)}"
120
122
  @start = Time.now
121
123
  @count = 0
122
124
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logporter
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 31
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 1
10
- version: 0.1.1
9
+ - 2
10
+ version: 0.1.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jordan Sissel
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-04-18 00:00:00 -07:00
18
+ date: 2011-05-05 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency