logstash-logger 0.20.1 → 0.21.0

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,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: aa6e6be4a21f97e0e387f3302e453bff59a95427
4
- data.tar.gz: 574fcb1301072aa8b5653f86580097fc57505f53
3
+ metadata.gz: 514e39db2da9a557f7ae7d76f0983d1d0df0ad0e
4
+ data.tar.gz: 5f1b91eaf92734f575210e0b47605d18b9e9a009
5
5
  SHA512:
6
- metadata.gz: f8c48f7d03ed01bb01072760411c27f3551844b7157b9f501eb371db633924c470d8238bf9de5f998aae0c34b601263f132158034db4c94f3c6ed6075b34d974
7
- data.tar.gz: acd9a7821effd72b1ef1bb1d812ccf25bdf92b1fcf8774473f2ca38fa195ad9250d54e7e97718ce7f4bf8c5f01a87dabf5bbd62a6a90ea83f512c6e96882c888
6
+ metadata.gz: 1cd1f25d9c54d7819ffc8c5a8707de72df1f46ac61bf410c6f7777eb6364aca34378e7cce99701e69eeb8febb1a15e433af2fbac39bd74d43e9dcd068bbbcdb1
7
+ data.tar.gz: 19eff3e6e2b01ddf299060372dc6caeae1a9fe148f8bb04d2e8d3e10f93e16e80229a3ef1819dbb08a81eda59fd53b13cf2552ab1bd05078702b56b055cc3709
@@ -1,3 +1,8 @@
1
+ ## 0.21.0
2
+
3
+ - Support for merging top level configuration in MultiLogger and
4
+ MultiDelegator. [#108](https://github.com/dwbutler/logstash-logger/pull/108)
5
+
1
6
  ## 0.20.1
2
7
 
3
8
  - Fixes missing require for URI [#107](https://github.com/dwbutler/logstash-logger/pull/107)
data/README.md CHANGED
@@ -238,6 +238,17 @@ This configuration would result in the following output.
238
238
  }
239
239
  ```
240
240
 
241
+ This block has full access to the event, so you can remove fields, modify
242
+ existing fields, etc. For example, to remove the default timestamp:
243
+
244
+ ```ruby
245
+ config = LogStashLogger.configure do |config|
246
+ config.customize_event do |event|
247
+ event.remove('@timestamp')
248
+ end
249
+ end
250
+ ```
251
+
241
252
  ## Buffering / Automatic Retries
242
253
 
243
254
  For devices that establish a connection to a remote service, log messages are buffered internally
@@ -269,6 +280,9 @@ Please be aware of the following caveats to this behavior:
269
280
  immediately. In my testing, it took Ruby about 4 seconds to notice the receiving end was down
270
281
  and start raising exceptions. Since logstash listeners over TCP/UDP do not acknowledge received
271
282
  messages, it's not possible to know which log messages to re-send.
283
+ * When `sync` is turned off, Ruby may buffer data internally before writing to
284
+ the IO device. This is why you may not see messages written immediately to a
285
+ UDP or TCP socket, even though LogStashLogger's buffer is periodically flushed.
272
286
 
273
287
  ## Full Buffer
274
288
 
@@ -597,6 +611,14 @@ For a more detailed discussion of UDP vs TCP, I recommend reading this article:
597
611
 
598
612
  ## Troubleshooting
599
613
 
614
+ ### Logstash never receives any logs
615
+ If you are using a device backed by a Ruby IO object (such as a file, UDP socket, or TCP socket), please be aware that Ruby
616
+ keeps its own internal buffer. Despite the fact that LogStashLogger buffers
617
+ messages and flushes them periodically, the data written to the IO object can
618
+ be buffered by Ruby internally indefinitely, and may not even write until the
619
+ program terminates. If this bothers you or you need to see log messages
620
+ immediately, your only recourse is to set the `sync: true` option.
621
+
600
622
  ### JSON::GeneratorError
601
623
  Your application is probably attempting to log data that is not encoded in a valid way. When this happens, Ruby's
602
624
  standard JSON library will raise an exception. You may be able to overcome this by swapping out a different JSON encoder
@@ -671,6 +693,7 @@ logger = LogStashLogger.new('localhost', 5228, :tcp)
671
693
  * [Mike Gunderloy](https://github.com/ffmike)
672
694
  * [Vitaly Gorodetsky](https://github.com/vitalis)
673
695
  * [Courtland Caldwell](https://github.com/caldwecr)
696
+ * [Bibek Shrestha](https://github.com/bibstha)
674
697
 
675
698
  ## Contributing
676
699
 
@@ -10,14 +10,16 @@ module LogStashLogger
10
10
 
11
11
  def initialize(opts)
12
12
  @io = self
13
- @devices = create_devices(opts[:outputs])
13
+ @devices = create_devices(opts)
14
14
  self.class.delegate(:write, :close, :close!, :flush)
15
15
  end
16
16
 
17
17
  private
18
18
 
19
19
  def create_devices(opts)
20
- opts.map do |device_opts|
20
+ output_configurations = opts.delete(:outputs)
21
+ output_configurations.map do |device_opts|
22
+ device_opts = opts.merge(device_opts)
21
23
  Device.new(device_opts)
22
24
  end
23
25
  end
@@ -72,7 +72,11 @@ module LogStashLogger
72
72
  end
73
73
 
74
74
  def self.build_multi_logger(opts)
75
- loggers = opts[:outputs].map { |logger_opts| build_logger(logger_opts) }
75
+ output_configurations = opts.delete(:outputs) || []
76
+ loggers = output_configurations.map do |config|
77
+ logger_opts = opts.merge(config)
78
+ build_logger(logger_opts)
79
+ end
76
80
  MultiLogger.new(loggers)
77
81
  end
78
82
 
@@ -1,3 +1,3 @@
1
1
  module LogStashLogger
2
- VERSION = "0.20.1"
2
+ VERSION = "0.21.0"
3
3
  end
@@ -0,0 +1,22 @@
1
+ require 'logstash-logger'
2
+
3
+ describe LogStashLogger do
4
+ describe ".new" do
5
+ it "returns a Logger instance" do
6
+ expect(LogStashLogger.new(type: :stdout)).to be_a ::Logger
7
+ end
8
+
9
+ context "type: :multi_logger" do
10
+ it "returns an instance of LogStashLogger::MultiLogger" do
11
+ expect(LogStashLogger.new(type: :multi_logger)).to be_a LogStashLogger::MultiLogger
12
+ end
13
+
14
+ it "merges top level configuration into each logger" do
15
+ logger = LogStashLogger.new(type: :multi_logger, port: 1234, outputs: [ { type: :tcp }, { type: :udp } ])
16
+ logger.loggers.each do |logger|
17
+ expect(logger.device.port).to eq(1234)
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -12,4 +12,20 @@ describe LogStashLogger::Device::MultiDelegator do
12
12
 
13
13
  subject.write("test")
14
14
  end
15
+
16
+ describe ".new" do
17
+ it "merges top level configuration to each output" do
18
+ logger = described_class.new(
19
+ port: 1234,
20
+ outputs: [
21
+ { type: :udp },
22
+ { type: :tcp }
23
+ ]
24
+ )
25
+
26
+ logger.devices.each do |device|
27
+ expect(device.port).to eq(1234)
28
+ end
29
+ end
30
+ end
15
31
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.20.1
4
+ version: 0.21.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Butler
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-18 00:00:00.000000000 Z
11
+ date: 2016-12-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: logstash-event
@@ -199,6 +199,7 @@ files:
199
199
  - samples/udp.conf
200
200
  - samples/unix.conf
201
201
  - spec/configuration_spec.rb
202
+ - spec/constructor_spec.rb
202
203
  - spec/device/balancer_spec.rb
203
204
  - spec/device/connectable_spec.rb
204
205
  - spec/device/file_spec.rb
@@ -253,6 +254,7 @@ specification_version: 4
253
254
  summary: LogStash Logger for ruby
254
255
  test_files:
255
256
  - spec/configuration_spec.rb
257
+ - spec/constructor_spec.rb
256
258
  - spec/device/balancer_spec.rb
257
259
  - spec/device/connectable_spec.rb
258
260
  - spec/device/file_spec.rb