logstash_rails 0.0.6 → 0.0.7

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/Gemfile CHANGED
@@ -12,4 +12,5 @@ end
12
12
  group :test do
13
13
  gem 'minitest', require: 'minitest/autorun'
14
14
  gem 'fakeredis'
15
+ gem 'mocha', require: false
15
16
  end
data/README.md CHANGED
@@ -2,8 +2,24 @@
2
2
 
3
3
  Send Logstash events from a Rails application to Redis.
4
4
 
5
+ ## Installation
5
6
 
6
- ## Usage
7
+ In your applications Gemfile:
8
+
9
+ ```ruby
10
+ gem 'logstash_rails'
11
+ ```
12
+
13
+ For the latest version:
14
+
15
+ ```ruby
16
+ gem 'logstash_rails', github: 'cmertz/logstash_rails'
17
+ ```
18
+
19
+ Provide an initializer (e.g. config/initializers/logstash_rails.rb) for
20
+ specific configuration.
21
+
22
+ ### Configuration
7
23
 
8
24
  **LogstashRails.config** takes a redis connection, the redis key for the list
9
25
  to push to and a flag that enables to catch all events (i.e. /.\*/)
@@ -30,6 +46,4 @@ end
30
46
 
31
47
  ## TODO
32
48
 
33
- * remove implicit mapping from event type names to formatter classes (i.e. make that an explicit lookup table)
34
- * reset config upon call to LogstashRails.config
35
- * add formatter for more events (e.g. actionmailer, actionview, ...)
49
+ * more independent from Rails i.e. check defined?(Rails) and provide fallbacks (for logger and application name)
@@ -1,41 +1,30 @@
1
1
  require 'logstash-event'
2
2
  require 'socket'
3
- require 'active_support/core_ext/string/inflections'
4
-
5
- Dir["#{File.dirname(__FILE__)}/formatter/*.rb"].each do |file|
6
- require file
7
- end
8
3
 
9
4
  module LogstashRails
10
5
  module Formatter
11
6
 
12
- def self.format(event_type, *args)
13
- json_event(event_type, *args)
14
- end
15
-
16
- private
7
+ def self.format(event_type, start, finish, id, payload)
8
+ fields = {
9
+ process_id: $$,
10
+ host: Socket.gethostname
11
+ }
17
12
 
18
- def self.json_event(event_type, start, finish, id, payload)
19
- event = LogStash::Event.new
13
+ event = LogStash::Event.new(payload.merge!(fields))
20
14
 
21
- event.message = event_type
22
15
  event.timestamp = start
23
- event.source = Socket.gethostname
24
-
25
- event.fields['pid'] = $$
26
- event.fields['id'] = id
27
-
28
- formatter(event_type).format(event, payload)
16
+ event.message = event_type
17
+ event.source = application_name
29
18
 
30
19
  event.to_json
31
20
  end
32
21
 
33
- def self.formatter(event_type)
34
- const_get(event_type.gsub('.','_').camelize.to_sym)
35
- end
22
+ private
36
23
 
37
- def self.can_handle?(event_type)
38
- const_defined?(event_type.gsub('.','_').camelize.to_sym) rescue false
24
+ def self.application_name
25
+ if defined?(Rails)
26
+ Rails.application.class.parent_name
27
+ end
39
28
  end
40
29
 
41
30
  end
@@ -1,3 +1,3 @@
1
1
  module LogstashRails
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
@@ -48,8 +48,6 @@ module LogstashRails
48
48
  private
49
49
 
50
50
  def push(event_type, *args)
51
- return unless Formatter.can_handle?(event_type)
52
-
53
51
  begin
54
52
  @redis.rpush(@key, Formatter.format(event_type, *args))
55
53
  rescue
data/spec/error_spec.rb CHANGED
@@ -1,38 +1,16 @@
1
1
  require 'spec_helper'
2
+ require 'mocha/setup'
2
3
 
3
4
  describe 'error behaviour' do
4
5
 
5
- before do
6
- Redis::Connection::Memory.reset_all_databases
7
- LogstashRails.config(redis)
8
- ActiveSupport::Notifications.instrument("process_action.action_controller")
9
- end
10
-
11
- def redis
12
- Redis.new
13
- end
14
-
15
6
  it 'logs exception traces to the Rails logger' do
16
- skip
17
-
18
- Rails = Class.new do
19
- def self.logger
20
- @logger_mock ||= MiniTest::Mock.new
21
- end
22
- end
23
-
24
- Rails.logger.expect(:error, nil, [String])
7
+ logger = MiniTest::Mock.new
8
+ logger.expect(:error, nil, [String])
9
+ LogstashRails.stubs(:log).returns(logger)
25
10
 
26
11
  LogstashRails.config(1)
27
12
 
28
13
  ActiveSupport::Notifications.instrument("process_action.action_controller")
29
14
  end
30
15
 
31
- it 'survives weird event type names' do
32
- skip
33
-
34
- LogstashRails.config(redis)
35
- ActiveSupport::Notifications.instrument("!!!")
36
- end
37
-
38
16
  end
@@ -18,14 +18,6 @@ describe LogstashRails do
18
18
  redis.lpop('logstash').wont_be_nil
19
19
  end
20
20
 
21
- it 'does not handle unknown events' do
22
- LogstashRails.config(redis)
23
-
24
- ActiveSupport::Notifications.instrument("toto")
25
-
26
- redis.lpop('logstash').must_be_nil
27
- end
28
-
29
21
  it 'does not handle events unless told to' do
30
22
  LogstashRails.config(redis, 'logtstash', false)
31
23
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-06-03 00:00:00.000000000 Z
12
+ date: 2013-06-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: logstash-event
@@ -74,7 +74,6 @@ files:
74
74
  - Rakefile
75
75
  - lib/logstash_rails.rb
76
76
  - lib/logstash_rails/formatter.rb
77
- - lib/logstash_rails/formatter/process_action_action_controller.rb
78
77
  - lib/logstash_rails/version.rb
79
78
  - logstash_rails.gemspec
80
79
  - spec/config_spec.rb
@@ -97,7 +96,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
97
96
  version: '0'
98
97
  segments:
99
98
  - 0
100
- hash: -258313220111572074
99
+ hash: -4390785812541147448
101
100
  required_rubygems_version: !ruby/object:Gem::Requirement
102
101
  none: false
103
102
  requirements:
@@ -106,7 +105,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
106
105
  version: '0'
107
106
  segments:
108
107
  - 0
109
- hash: -258313220111572074
108
+ hash: -4390785812541147448
110
109
  requirements: []
111
110
  rubyforge_project:
112
111
  rubygems_version: 1.8.25
@@ -1,16 +0,0 @@
1
- module LogstashRails
2
- module Formatter
3
- class ProcessActionActionController
4
-
5
- def self.format(event, payload)
6
- event.fields['http_verb'] = payload[:method]
7
- event.fields['controller'] = payload[:controller]
8
- event.fields['action'] = payload[:action]
9
- event.fields['path'] = payload[:path]
10
- event.fields['status'] = payload[:status]
11
- event.fields['params'] = payload[:params]
12
- end
13
-
14
- end
15
- end
16
- end