logstasher 0.4.7 → 0.4.8

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.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZDAyMmQ1MzFmZDM2NzVlNjQ0ZDkwMzI5MzExOGE5ZThhYzVlYTk4Ng==
4
+ MjdkMjE3MDE0ZWEzMDQ3Y2VkOTdjNjllODg4Y2UzNzZkOTg1Yjc5MA==
5
5
  data.tar.gz: !binary |-
6
- ZGJlYjA5OTYxNzFjMjM3MTZmZjk5YzM2YTdiYjM4OWM5YzFlMjc0NA==
6
+ YTcyYTI4MDY1NTY0YjJhMzg3MjlkMTM4NjQ0N2VmNTRmNTJlZGNmNA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- OWFiNmFkMjA5MzBhNjhiMWU4Yzc5ZTZlNjA4MmIyNzFmOTUxOTYzZjI4NjIx
10
- YzhhYTA4M2E5YTNjNGI4MzdjNjAxOTQ2OTY3OWUxYjZkMzJkZjIzY2I3NDJh
11
- NmIwM2NiMGViY2ZjNTEwY2ZkYWYwMWMzNTc4NzViYzc4ZGNmOWI=
9
+ YTEzNmI5ZmU0MTJhZWYzN2IwMzhlMTJhYjc1NGU0OTA3MGQzNWI4Mjc4ODNl
10
+ NTU0NGJiMTc3NmNlM2E4ZDliOTMzYmMyYmQ0ZWUxY2E1NWE0ZWJlZWZlNTZl
11
+ NTFjZjQxOWIwNzQ0NzhkNzE0NDYyYzg1YWEwYzdmNjBhYWM1MTU=
12
12
  data.tar.gz: !binary |-
13
- ZGJhNTA4OTk4YWNjMTQ1NTNiNDM3NzAyNzA3ZmU3MDEwMmExNjdlODhmY2Iw
14
- YTE3ZWZhZmFlYTBkMWZiZWY2YTg5MzcxYWM1Zjk2NTE1MTgzZWZiZTVjZDU1
15
- MzgyYWI3YjIwZjQzMjY1N2JlN2QxM2E4ZWY5NTg3YTMyMmRhNmU=
13
+ YTllN2NlMzFkNDI4MTNjN2QxNjRhNjI1ZTk5NTAxZjc2ZTYwNDdiODgwZTAz
14
+ NDU1MDUwYjM4NTBkZDc1MzlkMzc0MmU1NzQ4MGY3ZDNlMzNjZDliYmM3MWM3
15
+ YjgzMmU1MzdkNzM0MTkxNmRiNGNmMjdjZmU5Zjk0MGRhYjU3MmE=
data/README.md CHANGED
@@ -59,6 +59,18 @@ In your Gemfile:
59
59
  # This line is optional if you do not want to suppress app logs in your <environment>.log
60
60
  config.logstasher.suppress_app_log = false
61
61
 
62
+ ## Logging params hash
63
+
64
+ Logstasher can be configured to log the contents of the params hash. When enabled, the contents of the params hash (minus the ActionController internal params)
65
+ will be added to the log as a deep hash. This can cause conflicts within the Elasticsearch mappings though, so should be enabled with care. Conflicts will occur
66
+ if different actions (or even different applications logging to the same Elasticsearch cluster) use the same params key, but with a different data type (e.g. a
67
+ string vs. a hash). This can lead to lost log entries. Enabling this can also significantly increase the size of the Elasticsearch indexes.
68
+
69
+ To enable this, add the following to your `<environment>.rb`
70
+
71
+ # Enable logging of controller params
72
+ config.logstasher.log_controller_parameters = true
73
+
62
74
  ## Adding custom fields to the log
63
75
 
64
76
  Since some fields are very specific to your application for e.g. *user_name*, so it is left upto you, to add them. Here's how to add those fields to the logs:
data/lib/logstasher.rb CHANGED
@@ -6,7 +6,7 @@ require 'active_support/ordered_options'
6
6
 
7
7
  module LogStasher
8
8
  extend self
9
- attr_accessor :logger, :enabled
9
+ attr_accessor :logger, :enabled, :log_controller_parameters
10
10
 
11
11
  def remove_existing_log_subscriptions
12
12
  ActiveSupport::LogSubscriber.log_subscribers.each do |subscriber|
@@ -33,8 +33,11 @@ module LogStasher
33
33
  def add_default_fields_to_payload(payload, request)
34
34
  payload[:ip] = request.remote_ip
35
35
  payload[:route] = "#{request.params[:controller]}##{request.params[:action]}"
36
- payload[:parameters] = payload[:params].except(*ActionController::LogSubscriber::INTERNAL_PARAMS)
37
- self.custom_fields += [:ip, :route, :parameters]
36
+ self.custom_fields += [:ip, :route]
37
+ if self.log_controller_parameters
38
+ payload[:parameters] = payload[:params].except(*ActionController::LogSubscriber::INTERNAL_PARAMS)
39
+ self.custom_fields += [:parameters]
40
+ end
38
41
  end
39
42
 
40
43
  def add_custom_fields(&block)
@@ -52,6 +55,7 @@ module LogStasher
52
55
  self.logger = app.config.logstasher.logger || new_logger("#{Rails.root}/log/logstash_#{Rails.env}.log")
53
56
  self.logger.level = app.config.logstasher.log_level || Logger::WARN
54
57
  self.enabled = true
58
+ self.log_controller_parameters = !! app.config.logstasher.log_controller_parameters
55
59
  end
56
60
 
57
61
  def suppress_app_logs(app)
@@ -1,3 +1,3 @@
1
1
  module LogStasher
2
- VERSION = "0.4.7"
2
+ VERSION = "0.4.8"
3
3
  end
@@ -14,8 +14,12 @@ describe LogStasher::RequestLogSubscriber do
14
14
  }
15
15
  before do
16
16
  LogStasher.logger = logger
17
+ LogStasher.log_controller_parameters = true
17
18
  LogStasher.custom_fields = []
18
19
  end
20
+ after do
21
+ LogStasher.log_controller_parameters = false
22
+ end
19
23
 
20
24
  let(:subscriber) {LogStasher::RequestLogSubscriber.new}
21
25
  let(:event) {
@@ -38,8 +38,10 @@ describe LogStasher do
38
38
  let(:request) { double(:params => params, :remote_ip => '10.0.0.1')}
39
39
  after do
40
40
  LogStasher.custom_fields = []
41
+ LogStasher.log_controller_parameters = false
41
42
  end
42
43
  it 'appends default parameters to payload' do
44
+ LogStasher.log_controller_parameters = true
43
45
  LogStasher.custom_fields = []
44
46
  LogStasher.add_default_fields_to_payload(payload, request)
45
47
  payload[:ip].should == '10.0.0.1'
@@ -47,6 +49,13 @@ describe LogStasher do
47
49
  payload[:parameters].should == {'a' => '1', 'b' => 2}
48
50
  LogStasher.custom_fields.should == [:ip, :route, :parameters]
49
51
  end
52
+
53
+ it 'does not include parameters when not configured to' do
54
+ LogStasher.custom_fields = []
55
+ LogStasher.add_default_fields_to_payload(payload, request)
56
+ payload.should_not have_key(:parameters)
57
+ LogStasher.custom_fields.should == [:ip, :route]
58
+ end
50
59
  end
51
60
 
52
61
  describe '.append_custom_params' do
@@ -59,7 +68,7 @@ describe LogStasher do
59
68
 
60
69
  describe '.setup' do
61
70
  let(:logger) { double }
62
- let(:logstasher_config) { double(:logger => logger,:log_level => 'warn') }
71
+ let(:logstasher_config) { double(:logger => logger,:log_level => 'warn',:log_controller_parameters => nil) }
63
72
  let(:config) { double(:logstasher => logstasher_config) }
64
73
  let(:app) { double(:config => config) }
65
74
  before do
@@ -74,6 +83,7 @@ describe LogStasher do
74
83
  LogStasher.setup(app)
75
84
  LogStasher.enabled.should be_true
76
85
  LogStasher.custom_fields.should == []
86
+ LogStasher.log_controller_parameters.should == false
77
87
  end
78
88
  end
79
89
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstasher
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.7
4
+ version: 0.4.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shadab Ahmed