logporter 0.1.1 → 0.1.2
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.
- data/lib/logporter/protocol/syslog3164.rb +4 -1
- data/lib/logporter/server.rb +30 -17
- data/lib/logporter/server/connection.rb +4 -2
- metadata +4 -4
@@ -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
|
-
|
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
|
data/lib/logporter/server.rb
CHANGED
@@ -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.
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
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
|
75
|
-
|
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
|
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
|
119
|
-
|
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:
|
4
|
+
hash: 31
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.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-
|
18
|
+
date: 2011-05-05 00:00:00 -07:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|