logporter 0.0.2 → 0.1.1

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.
@@ -1,5 +1,4 @@
1
1
  require "logporter/namespace"
2
- require "time" # for Time.strptime
3
2
 
4
3
  module LogPorter::Protocol::Syslog3164
5
4
  def syslog3164_init
@@ -33,9 +32,7 @@ module LogPorter::Protocol::Syslog3164
33
32
  if m
34
33
  # RFC3164 section 4.3.3 No PRI or Unidentifiable PRI
35
34
  event.pri = m[1] || "13"
36
-
37
- # TODO(sissel): DateTime is a very slow library, consider alternatives?
38
- event.timestamp = Time.strptime(m[2], "%b %d %H:%M:%S")
35
+ event.timestamp = m[2]
39
36
  event.hostname = m[3]
40
37
  event.message = m[4]
41
38
  return true
@@ -1,7 +1,6 @@
1
1
  require "logporter/namespace"
2
2
  require "logporter/server/connection"
3
3
  require "logporter/server/defaulthandler"
4
- require "logger"
5
4
 
6
5
  class LogPorter::Server
7
6
 
@@ -24,9 +23,6 @@ class LogPorter::Server
24
23
  # This is a hash
25
24
  attr_reader :attributes
26
25
 
27
- # The logger object
28
- attr_accessor :logger
29
-
30
26
  # Create a new server to listen with
31
27
  # 'options' is a hash of:
32
28
  #
@@ -35,12 +31,11 @@ class LogPorter::Server
35
31
  # :wire => the wire format (:raw, :syslog)
36
32
  # :handler => the handler instance. Must respond to 'receive_event'
37
33
  def initialize(options)
38
- @logger = Logger.new(STDOUT)
39
34
  @network = options[:net]
40
- @port = options.delete(:port) || 514
41
- @wire = options.delete(:wire) || :raw
42
- @handler = options.delete(:handler) || LogPorter::Server::DefaultHandler.new
43
- @attributes = options.delete(:attributes) || Hash.new
35
+ @port = options[:port] || 514
36
+ @wire = options[:wire] || :raw
37
+ @handler = options[:handler] || LogPorter::Server::DefaultHandler.new
38
+ @attributes = options[:attributes] || Hash.new
44
39
 
45
40
  if @network == :tls
46
41
  @tls = TLSConfig.new
@@ -62,32 +57,25 @@ class LogPorter::Server
62
57
  # s.start
63
58
  #
64
59
  # EventMachine.run()
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.
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)
80
73
  else
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
74
+ raise e
75
+ end
88
76
  end
89
77
  end
90
- end # def _start
78
+ end # def start
91
79
 
92
80
  private
93
81
  def start_udp_server
@@ -105,11 +93,10 @@ class LogPorter::Server
105
93
  public
106
94
  def receive_event(event, client_addr, client_port)
107
95
  @handler.receive_event(event, self, client_addr, client_port)
108
- end # def receive_event
96
+ end
109
97
 
110
98
  public
111
99
  def stop
112
- @logger.info "Stopping #{@network}/#{@port}"
113
100
  case @network
114
101
  when :tcp
115
102
  EventMachine::stop_server(@socket)
@@ -1,4 +1,5 @@
1
- require "eventmachine"
1
+ require "eventmachine" if !(EventMachine::Connection rescue nil)
2
+ require "em/buftok" # for BufferedTokenizer
2
3
  require "logporter/event"
3
4
  require "logporter/namespace"
4
5
  require "logporter/protocol/syslog3164"
@@ -10,6 +11,7 @@ class LogPorter::Server::Connection < EventMachine::Connection
10
11
 
11
12
  def initialize(server)
12
13
  @server = server
14
+ super()
13
15
  end
14
16
 
15
17
  def post_init
@@ -30,6 +32,7 @@ class LogPorter::Server::Connection < EventMachine::Connection
30
32
 
31
33
  @count = 0
32
34
 
35
+ # TODO(sissel): Document why this.
33
36
  case @server.wire
34
37
  when :raw
35
38
  class << self
@@ -43,11 +46,14 @@ class LogPorter::Server::Connection < EventMachine::Connection
43
46
  raise "Unsupported protocol #{@server.protocol}"
44
47
  end
45
48
 
46
- begin
47
- @client_port, @client_address = Socket.unpack_sockaddr_in(get_peername)
48
- @server.logger.info "New client: #{@client_address}:#{@client_port}"
49
- rescue => e
50
- p e
49
+ if @server.network != :udp
50
+ peer = get_peername
51
+ if peer.is_a?(Array) # new em-netty::Connection.get_peername
52
+ @client_address, @client_port = peer
53
+ else
54
+ @client_port, @client_address = Socket.unpack_sockaddr_in(peer)
55
+ end
56
+ puts "New client: #{@client_address}:#{@client_port}"
51
57
  end
52
58
  end # def post_init
53
59
 
@@ -58,7 +64,12 @@ class LogPorter::Server::Connection < EventMachine::Connection
58
64
 
59
65
  def receive_data(data)
60
66
  if @server.network == :udp
61
- client_port, client_address = Socket.unpack_sockaddr_in(get_peername)
67
+ peer = get_peername
68
+ if peer.is_a?(Array) # new em-netty::Connection.get_peername
69
+ client_address, client_port = peer
70
+ else
71
+ client_port, client_address = Socket.unpack_sockaddr_in(peer)
72
+ end
62
73
  else
63
74
  client_port = @client_port
64
75
  client_address = @client_address
@@ -104,8 +115,8 @@ class LogPorter::Server::Connection < EventMachine::Connection
104
115
  def stats
105
116
  @start ||= Time.now
106
117
  @count += 1
107
- if (Time.now - @start) > 10
108
- @server.logger.info "Rate: #{@count / (Time.now - @start)}"
118
+ if @count % 50000 == 0
119
+ puts "Rate: #{@count / (Time.now - @start)}"
109
120
  @start = Time.now
110
121
  @count = 0
111
122
  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: 27
5
- prerelease:
4
+ hash: 25
5
+ prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 0
9
- - 2
10
- version: 0.0.2
8
+ - 1
9
+ - 1
10
+ version: 0.1.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jordan Sissel
@@ -15,11 +15,24 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-04-04 00:00:00 -07:00
18
+ date: 2011-04-18 00:00:00 -07:00
19
19
  default_executable:
20
- dependencies: []
21
-
22
- description: None yet.
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: eventmachine
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ description: syslog servlet for ruby
23
36
  email: jordan@loggly.com
24
37
  executables: []
25
38
 
@@ -28,12 +41,12 @@ extensions: []
28
41
  extra_rdoc_files: []
29
42
 
30
43
  files:
44
+ - lib/logporter/server.rb
31
45
  - lib/logporter/protocol/syslog3164.rb
32
46
  - lib/logporter/namespace.rb
33
- - lib/logporter/server.rb
47
+ - lib/logporter/event.rb
34
48
  - lib/logporter/server/defaulthandler.rb
35
49
  - lib/logporter/server/connection.rb
36
- - lib/logporter/event.rb
37
50
  - test/syslog.rb
38
51
  has_rdoc: true
39
52
  homepage: https://github.com/loggly/logporter
@@ -66,7 +79,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
66
79
  requirements: []
67
80
 
68
81
  rubyforge_project:
69
- rubygems_version: 1.5.1
82
+ rubygems_version: 1.3.7
70
83
  signing_key:
71
84
  specification_version: 3
72
85
  summary: logporter - a log server