logstash-logger 0.25.1 → 0.26.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/README.md +55 -3
- data/lib/logstash-logger/buffer.rb +9 -1
- data/lib/logstash-logger/device/aws_stream.rb +12 -9
- data/lib/logstash-logger/device/base.rb +5 -1
- data/lib/logstash-logger/device/connectable.rb +6 -1
- data/lib/logstash-logger/device/firehose.rb +6 -1
- data/lib/logstash-logger/device/kinesis.rb +6 -1
- data/lib/logstash-logger/formatter/base.rb +8 -3
- data/lib/logstash-logger/formatter/cee.rb +4 -3
- data/lib/logstash-logger/formatter/cee_syslog.rb +10 -8
- data/lib/logstash-logger/formatter/json.rb +4 -3
- data/lib/logstash-logger/formatter/json_lines.rb +4 -3
- data/lib/logstash-logger/formatter/logstash_event.rb +0 -3
- data/lib/logstash-logger/logger.rb +8 -2
- data/lib/logstash-logger/version.rb +1 -1
- data/logstash-logger.gemspec +1 -0
- data/spec/constructor_spec.rb +12 -4
- data/spec/device/firehose_spec.rb +1 -5
- data/spec/device/kinesis_spec.rb +0 -4
- data/spec/formatter/base_spec.rb +22 -0
- data/spec/formatter/cee_syslog_spec.rb +4 -4
- data/spec/syslog_spec.rb +14 -7
- metadata +16 -3
- data/.codeclimate.yml +0 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2f81edad89b077de5fa36b1b1291f6b0d1c66761
|
4
|
+
data.tar.gz: 9834bb9837f9b9d6672f6a24b0325e3d2d9098ef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 49afad48b880a4c98156de108ad9f3105ed3ecf72e38d24987d08027d56ecdc2147c4b46fe0fb9d59799fdfbf44af7218e70e9185470f0f046e89921976afed1
|
7
|
+
data.tar.gz: 7274f69bc942ee4c2597682cde7f818c6da371bc58108ef56b2e3002b854e7142f241529003f5ed4f7c2001b35364e23f62572b70430ef9971131088c44a7b71
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
## 0.26.0
|
2
|
+
|
3
|
+
- Allow user configuration of the logger class. [#129](https://github.com/dwbutler/logstash-logger/pull/129)
|
4
|
+
- Fix: Allow type to be a string for multi_logger and syslog. [#131](https://github.com/dwbutler/logstash-logger/pull/131)
|
5
|
+
- Fix: Cancelled events are being logged. [#133](https://github.com/dwbutler/logstash-logger/issues/133)
|
6
|
+
- Fix: Expose method to reset logger state. [#138](https://github.com/dwbutler/logstash-logger/pull/138)
|
7
|
+
- Use specific AWS SDK gems. [#136](https://github.com/dwbutler/logstash-logger/pull/136)
|
8
|
+
- Adds support for using the default AWS credential provider chain. [#141](https://github.com/dwbutler/logstash-logger/pull/141)
|
9
|
+
|
1
10
|
## 0.25.1
|
2
11
|
|
3
12
|
- Skip message truncating when there is no message field. [#130](https://github.com/dwbutler/logstash-logger/pull/130)
|
data/README.md
CHANGED
@@ -399,6 +399,15 @@ logger.silence(temporary_level) do
|
|
399
399
|
end
|
400
400
|
```
|
401
401
|
|
402
|
+
## Custom Logger Class
|
403
|
+
|
404
|
+
By default, LogStashLogger creates a logger that extends Ruby's built in `Logger` class.
|
405
|
+
If you require a different logger implementation, you can use a different class
|
406
|
+
by passing in the class with the `logger_class` option.
|
407
|
+
|
408
|
+
Note that for syslog, the `Syslog::Logger` class is required and cannot be
|
409
|
+
changed.
|
410
|
+
|
402
411
|
## Rails Integration
|
403
412
|
|
404
413
|
Supports Rails 4 and 5.
|
@@ -559,6 +568,10 @@ config.logstash.backoff = 1
|
|
559
568
|
|
560
569
|
Add the aws-sdk gem to your Gemfile:
|
561
570
|
|
571
|
+
# aws-sdk >= 3.0
|
572
|
+
gem 'aws-sdk-kinesis'
|
573
|
+
|
574
|
+
# aws-sdk < 3.0
|
562
575
|
gem 'aws-sdk'
|
563
576
|
|
564
577
|
```ruby
|
@@ -583,6 +596,10 @@ config.logstash.aws_secret_access_key = 'ASKASKHLD1234123412341234'
|
|
583
596
|
|
584
597
|
Add the aws-sdk gem to your Gemfile:
|
585
598
|
|
599
|
+
# aws-sdk >= 3.0
|
600
|
+
gem 'aws-sdk-firehose'
|
601
|
+
|
602
|
+
# aws-sdk < 3.0
|
586
603
|
gem 'aws-sdk'
|
587
604
|
|
588
605
|
```ruby
|
@@ -592,13 +609,13 @@ config.logstash.type = :firehose
|
|
592
609
|
# Optional, will default to the 'logstash' delivery stream
|
593
610
|
config.logstash.stream = 'my-stream-name'
|
594
611
|
|
595
|
-
# Optional, will default to
|
612
|
+
# Optional, will default to AWS default region config chain
|
596
613
|
config.logstash.aws_region = 'us-west-2'
|
597
614
|
|
598
|
-
# Optional, will default to
|
615
|
+
# Optional, will default to AWS default credential provider chain
|
599
616
|
config.logstash.aws_access_key_id = 'ASKASKHLD12341'
|
600
617
|
|
601
|
-
# Optional, will default to
|
618
|
+
# Optional, will default to AWS default credential provider chain
|
602
619
|
config.logstash.aws_secret_access_key = 'ASKASKHLD1234123412341234'
|
603
620
|
|
604
621
|
```
|
@@ -693,6 +710,36 @@ def track_load_balancer_session_id
|
|
693
710
|
end
|
694
711
|
```
|
695
712
|
|
713
|
+
## Cleaning up resources when forking
|
714
|
+
|
715
|
+
If your application forks (as is common with many web servers) you will need to
|
716
|
+
manage cleaning up resources on your LogStashLogger instances. The instance method
|
717
|
+
`#reset` is available for this purpose. Here is sample configuration for
|
718
|
+
several common web servers used with Rails:
|
719
|
+
|
720
|
+
Passenger:
|
721
|
+
```ruby
|
722
|
+
::PhusionPassenger.on_event(:starting_worker_process) do |forked|
|
723
|
+
Rails.logger.reset
|
724
|
+
end
|
725
|
+
```
|
726
|
+
|
727
|
+
Puma:
|
728
|
+
```ruby
|
729
|
+
# In config/puma.rb
|
730
|
+
on_worker_boot do
|
731
|
+
Rails.logger.reset
|
732
|
+
end
|
733
|
+
```
|
734
|
+
|
735
|
+
Unicorn
|
736
|
+
```ruby
|
737
|
+
# In config/unicorn.rb
|
738
|
+
after_fork do |server, worker|
|
739
|
+
Rails.logger.reset
|
740
|
+
end
|
741
|
+
```
|
742
|
+
|
696
743
|
## Ruby Compatibility
|
697
744
|
|
698
745
|
Verified to work with:
|
@@ -818,6 +865,11 @@ logger = LogStashLogger.new('localhost', 5228, :tcp)
|
|
818
865
|
* [Joao Fernandes](https://github.com/jcmfernandes)
|
819
866
|
* [CoolElvis](https://github.com/coolelvis)
|
820
867
|
* [Sergey Pyankov](https://github.com/esergion)
|
868
|
+
* [Alec Hoey](https://github.com/alechoey)
|
869
|
+
* [Alexey Krasnoperov](https://github.com/AlexeyKrasnoperov)
|
870
|
+
* [Gabriel de Oliveira](https://github.com/gdeoliveira)
|
871
|
+
* [Vladislav Syabruk](https://github.com/SeTeM)
|
872
|
+
* [Matus Vacula](https://github.com/matus-vacula)
|
821
873
|
|
822
874
|
## Contributing
|
823
875
|
|
@@ -107,6 +107,8 @@ module LogStashLogger
|
|
107
107
|
end
|
108
108
|
|
109
109
|
def reset_buffer
|
110
|
+
reset_flush_timer_thread
|
111
|
+
|
110
112
|
@buffer_state = {
|
111
113
|
# items accepted from including class
|
112
114
|
:pending_items => {},
|
@@ -127,7 +129,6 @@ module LogStashLogger
|
|
127
129
|
:timer => flush_timer_thread
|
128
130
|
}
|
129
131
|
|
130
|
-
|
131
132
|
# events we've accumulated
|
132
133
|
buffer_clear_pending
|
133
134
|
end
|
@@ -305,6 +306,13 @@ module LogStashLogger
|
|
305
306
|
end
|
306
307
|
end
|
307
308
|
|
309
|
+
def reset_flush_timer_thread
|
310
|
+
unless @flush_timer_thread.nil?
|
311
|
+
@flush_timer_thread.kill
|
312
|
+
@flush_timer_thread = nil
|
313
|
+
end
|
314
|
+
end
|
315
|
+
|
308
316
|
def buffer_clear_pending
|
309
317
|
@buffer_state[:pending_items] = Hash.new { |h, k| h[k] = [] }
|
310
318
|
@buffer_state[:pending_count] = 0
|
@@ -1,10 +1,13 @@
|
|
1
|
-
|
1
|
+
begin
|
2
|
+
require 'aws-sdk-core'
|
3
|
+
rescue LoadError
|
4
|
+
require 'aws-sdk'
|
5
|
+
end
|
2
6
|
|
3
7
|
module LogStashLogger
|
4
8
|
module Device
|
5
9
|
class AwsStream < Connectable
|
6
10
|
|
7
|
-
DEFAULT_REGION = 'us-east-1'
|
8
11
|
DEFAULT_STREAM = 'logstash'
|
9
12
|
|
10
13
|
@stream_class = nil
|
@@ -18,9 +21,9 @@ module LogStashLogger
|
|
18
21
|
|
19
22
|
def initialize(opts)
|
20
23
|
super
|
21
|
-
@access_key_id = opts[:aws_access_key_id]
|
22
|
-
@secret_access_key = opts[:aws_secret_access_key]
|
23
|
-
@aws_region = opts[:aws_region]
|
24
|
+
@access_key_id = opts[:aws_access_key_id]
|
25
|
+
@secret_access_key = opts[:aws_secret_access_key]
|
26
|
+
@aws_region = opts[:aws_region]
|
24
27
|
@stream = opts[:stream] || DEFAULT_STREAM
|
25
28
|
end
|
26
29
|
|
@@ -41,10 +44,10 @@ module LogStashLogger
|
|
41
44
|
end
|
42
45
|
|
43
46
|
def connect
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
)
|
47
|
+
client_opts = {}
|
48
|
+
client_opts[:credentials] = Aws::Credentials.new(@access_key_id, @secret_access_key) unless @access_key_id == nil || @secret_access_key == nil
|
49
|
+
client_opts[:region] = @aws_region unless @aws_region == nil
|
50
|
+
@io = self.class.stream_class.new(client_opts)
|
48
51
|
end
|
49
52
|
|
50
53
|
def with_connection
|
@@ -15,7 +15,7 @@ module LogStashLogger
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def write(message)
|
18
|
-
write_one(message)
|
18
|
+
write_one(message) unless message.nil?
|
19
19
|
end
|
20
20
|
|
21
21
|
def write_one(message)
|
@@ -39,6 +39,10 @@ module LogStashLogger
|
|
39
39
|
@io && @io.flush
|
40
40
|
end
|
41
41
|
|
42
|
+
def reset
|
43
|
+
close
|
44
|
+
end
|
45
|
+
|
42
46
|
def close(opts = {})
|
43
47
|
close!
|
44
48
|
rescue => e
|
@@ -56,7 +56,7 @@ module LogStashLogger
|
|
56
56
|
end
|
57
57
|
|
58
58
|
def write(message)
|
59
|
-
buffer_receive
|
59
|
+
buffer_receive(message, @buffer_group) unless message.nil?
|
60
60
|
end
|
61
61
|
|
62
62
|
def flush(*args)
|
@@ -107,6 +107,11 @@ module LogStashLogger
|
|
107
107
|
fail NotImplementedError
|
108
108
|
end
|
109
109
|
|
110
|
+
def reset
|
111
|
+
reset_buffer
|
112
|
+
close(flush: false)
|
113
|
+
end
|
114
|
+
|
110
115
|
def reconnect
|
111
116
|
close(flush: false)
|
112
117
|
connect
|
@@ -14,11 +14,12 @@ module LogStashLogger
|
|
14
14
|
super()
|
15
15
|
end
|
16
16
|
|
17
|
-
def call(severity, time,
|
18
|
-
|
17
|
+
def call(severity, time, _progname, message)
|
18
|
+
event = build_event(message, severity, time)
|
19
|
+
format_event(event) unless event.cancelled?
|
19
20
|
end
|
20
21
|
|
21
|
-
|
22
|
+
private
|
22
23
|
|
23
24
|
def build_event(message, severity, time)
|
24
25
|
data = message
|
@@ -63,6 +64,10 @@ module LogStashLogger
|
|
63
64
|
|
64
65
|
event
|
65
66
|
end
|
67
|
+
|
68
|
+
def format_event(event)
|
69
|
+
event
|
70
|
+
end
|
66
71
|
end
|
67
72
|
end
|
68
73
|
end
|
@@ -2,18 +2,20 @@ module LogStashLogger
|
|
2
2
|
module Formatter
|
3
3
|
class CeeSyslog < Cee
|
4
4
|
def call(severity, time, progname, message)
|
5
|
-
@cee = super
|
6
5
|
@progname = progname
|
7
|
-
|
8
|
-
"#{facility}:#{@cee}\n"
|
6
|
+
super
|
9
7
|
end
|
10
8
|
|
11
|
-
|
9
|
+
private
|
10
|
+
|
11
|
+
def build_facility(host)
|
12
|
+
facility = host.dup
|
13
|
+
facility << " #{@progname}" if @progname
|
14
|
+
facility
|
15
|
+
end
|
12
16
|
|
13
|
-
def
|
14
|
-
|
15
|
-
@facility << " #{@progname}" if @progname
|
16
|
-
@facility
|
17
|
+
def format_event(event)
|
18
|
+
"#{build_facility(event["host".freeze])}:#{super}\n"
|
17
19
|
end
|
18
20
|
end
|
19
21
|
end
|
@@ -19,6 +19,10 @@ module LogStashLogger
|
|
19
19
|
def flush
|
20
20
|
!!(@device.flush if @device.respond_to?(:flush))
|
21
21
|
end
|
22
|
+
|
23
|
+
def reset
|
24
|
+
@device.reset if @device.respond_to?(:reset)
|
25
|
+
end
|
22
26
|
end
|
23
27
|
end
|
24
28
|
|
@@ -48,7 +52,8 @@ module LogStashLogger
|
|
48
52
|
def self.build_logger(opts)
|
49
53
|
formatter = Formatter.new(opts.delete(:formatter), customize_event: opts.delete(:customize_event))
|
50
54
|
|
51
|
-
|
55
|
+
logger_type = opts[:type].to_s.to_sym
|
56
|
+
logger = case logger_type
|
52
57
|
when :multi_logger
|
53
58
|
build_multi_logger(opts)
|
54
59
|
when :syslog
|
@@ -64,8 +69,9 @@ module LogStashLogger
|
|
64
69
|
private
|
65
70
|
|
66
71
|
def self.build_default_logger(opts)
|
72
|
+
logger_class = opts.delete(:logger_class) || ::Logger
|
67
73
|
device = Device.new(opts)
|
68
|
-
|
74
|
+
logger_class.new(device).tap do |logger|
|
69
75
|
logger.instance_variable_set(:@device, device)
|
70
76
|
extend_logger(logger)
|
71
77
|
end
|
data/logstash-logger.gemspec
CHANGED
data/spec/constructor_spec.rb
CHANGED
@@ -1,22 +1,30 @@
|
|
1
1
|
require 'logstash-logger'
|
2
2
|
|
3
3
|
describe LogStashLogger do
|
4
|
-
describe
|
5
|
-
it
|
4
|
+
describe '.new' do
|
5
|
+
it 'returns a Logger instance' do
|
6
6
|
expect(LogStashLogger.new(type: :stdout)).to be_a ::Logger
|
7
7
|
end
|
8
8
|
|
9
|
-
context
|
9
|
+
context 'type: :multi_logger' do
|
10
10
|
it "returns an instance of LogStashLogger::MultiLogger" do
|
11
11
|
expect(LogStashLogger.new(type: :multi_logger)).to be_a LogStashLogger::MultiLogger
|
12
12
|
end
|
13
13
|
|
14
|
-
it
|
14
|
+
it 'merges top level configuration into each logger' do
|
15
15
|
logger = LogStashLogger.new(type: :multi_logger, port: 1234, outputs: [ { type: :tcp }, { type: :udp } ])
|
16
16
|
logger.loggers.each do |logger|
|
17
17
|
expect(logger.device.port).to eq(1234)
|
18
18
|
end
|
19
19
|
end
|
20
20
|
end
|
21
|
+
|
22
|
+
context 'logger_class: CustomLogger' do
|
23
|
+
class CustomLogger < Logger; end
|
24
|
+
|
25
|
+
it 'should create a logger of the specified class' do
|
26
|
+
expect(LogStashLogger.new(type: :stdout, :logger_class => CustomLogger)).to be_a CustomLogger
|
27
|
+
end
|
28
|
+
end
|
21
29
|
end
|
22
30
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'logstash-logger'
|
2
2
|
|
3
|
-
describe LogStashLogger::Device::
|
3
|
+
describe LogStashLogger::Device::Firehose do
|
4
4
|
include_context 'device'
|
5
5
|
|
6
6
|
let(:client) { double("Aws::Firehose::Client") }
|
@@ -35,10 +35,6 @@ describe LogStashLogger::Device::Kinesis do
|
|
35
35
|
firehose_device.write_one "foo"
|
36
36
|
end
|
37
37
|
|
38
|
-
it "defaults the AWS region to us-east-1" do
|
39
|
-
expect(firehose_device.aws_region).to eq('us-east-1')
|
40
|
-
end
|
41
|
-
|
42
38
|
it "defaults the Firehose stream to logstash" do
|
43
39
|
expect(firehose_device.stream).to eq('logstash')
|
44
40
|
end
|
data/spec/device/kinesis_spec.rb
CHANGED
@@ -35,10 +35,6 @@ describe LogStashLogger::Device::Kinesis do
|
|
35
35
|
kinesis_device.write_one "foo"
|
36
36
|
end
|
37
37
|
|
38
|
-
it "defaults the AWS region to us-east-1" do
|
39
|
-
expect(kinesis_device.aws_region).to eq('us-east-1')
|
40
|
-
end
|
41
|
-
|
42
38
|
it "defaults the kinesis stream to logstash" do
|
43
39
|
expect(kinesis_device.stream).to eq('logstash')
|
44
40
|
end
|
data/spec/formatter/base_spec.rb
CHANGED
@@ -3,6 +3,28 @@ require 'logstash-logger'
|
|
3
3
|
describe LogStashLogger::Formatter::Base do
|
4
4
|
include_context "formatter"
|
5
5
|
|
6
|
+
describe "#call" do
|
7
|
+
context "when event is not cancelled" do
|
8
|
+
it "returns a formatted message" do
|
9
|
+
expect(subject).to receive(:format_event).once.with(instance_of(LogStash::Event)).and_call_original
|
10
|
+
expect(subject.call(severity, time, progname, message)).to be_a(LogStash::Event)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
context "when event is cancelled" do
|
15
|
+
before(:each) do
|
16
|
+
LogStashLogger.configure do |config|
|
17
|
+
config.customize_event(&:cancel)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
it "returns `nil`" do
|
22
|
+
expect(subject).not_to receive(:format_event)
|
23
|
+
expect(subject.call(severity, time, progname, message)).to be_nil
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
6
28
|
describe "#build_event" do
|
7
29
|
let(:event) { formatted_message }
|
8
30
|
|
@@ -7,7 +7,7 @@ describe LogStashLogger::Formatter::CeeSyslog do
|
|
7
7
|
let(:facility) { "facility" }
|
8
8
|
|
9
9
|
before do
|
10
|
-
allow(subject).to receive(:
|
10
|
+
allow(subject).to receive(:build_facility).and_return(facility)
|
11
11
|
end
|
12
12
|
|
13
13
|
it "outputs a facility before the @cee" do
|
@@ -21,7 +21,7 @@ describe LogStashLogger::Formatter::CeeSyslog do
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
-
describe "#
|
24
|
+
describe "#build_facility" do
|
25
25
|
let(:host) { Socket.gethostname }
|
26
26
|
|
27
27
|
before do
|
@@ -29,14 +29,14 @@ describe LogStashLogger::Formatter::CeeSyslog do
|
|
29
29
|
end
|
30
30
|
|
31
31
|
it "includes hostname and progname" do
|
32
|
-
expect(subject.send(:
|
32
|
+
expect(subject.send(:build_facility, host)).to match(/\A#{host}\s#{progname}\z/)
|
33
33
|
end
|
34
34
|
|
35
35
|
context "without progname" do
|
36
36
|
let(:progname) { nil }
|
37
37
|
|
38
38
|
it "only includes hostname" do
|
39
|
-
expect(subject.send(:
|
39
|
+
expect(subject.send(:build_facility, host)).to match(/\A#{host}\z/)
|
40
40
|
end
|
41
41
|
end
|
42
42
|
end
|
data/spec/syslog_spec.rb
CHANGED
@@ -1,25 +1,32 @@
|
|
1
1
|
require 'logstash-logger'
|
2
2
|
|
3
3
|
describe LogStashLogger do
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
let(:program_name) { 'MyApp' }
|
5
|
+
let(:facility) { 128 } #Syslog::LOG_LOCAL0 }
|
6
|
+
|
7
|
+
context 'Syslog' do
|
7
8
|
subject { LogStashLogger.new(type: :syslog, program_name: program_name, facility: facility) }
|
8
9
|
let(:syslog) { subject.class.class_variable_get(:@@syslog) }
|
9
10
|
|
10
11
|
it { is_expected.to be_a Syslog::Logger }
|
11
12
|
|
12
|
-
it
|
13
|
+
it 'writes formatted messages to syslog' do
|
13
14
|
expect(syslog).to receive(:log)
|
14
|
-
subject.info(
|
15
|
+
subject.info('test')
|
15
16
|
end
|
16
17
|
|
17
|
-
it
|
18
|
+
it 'sets the syslog identity' do
|
18
19
|
expect(syslog.ident).to eq(program_name)
|
19
20
|
end
|
20
21
|
|
21
|
-
it
|
22
|
+
it 'sets the default facility if supported' do
|
22
23
|
expect(subject.facility).to eq(facility) if subject.respond_to?(:facility)
|
23
24
|
end
|
24
25
|
end
|
26
|
+
|
27
|
+
context 'when logger type is a string' do
|
28
|
+
subject { LogStashLogger.new(type: 'syslog', program_name: program_name, facility: facility) }
|
29
|
+
|
30
|
+
it { is_expected.to be_a Syslog::Logger }
|
31
|
+
end
|
25
32
|
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.
|
4
|
+
version: 0.26.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:
|
11
|
+
date: 2018-01-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: logstash-event
|
@@ -150,6 +150,20 @@ dependencies:
|
|
150
150
|
- - ">="
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: rubocop
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
153
167
|
description: Ruby logger that writes directly to LogStash
|
154
168
|
email:
|
155
169
|
- dwbutler@ucla.edu
|
@@ -157,7 +171,6 @@ executables: []
|
|
157
171
|
extensions: []
|
158
172
|
extra_rdoc_files: []
|
159
173
|
files:
|
160
|
-
- ".codeclimate.yml"
|
161
174
|
- ".gitignore"
|
162
175
|
- ".rspec"
|
163
176
|
- ".rubocop.yml"
|