logger_facade 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 23cc1584b5cfa42c103b970633ce4ae8b0a53690
4
- data.tar.gz: 2886973542c5e009e047e29c7c4d150e6a77d9b9
3
+ metadata.gz: 3dc0e14861809751be33ef99cd453eaea0419812
4
+ data.tar.gz: 83fbb29db67b52a84ee4f91f046a9d3a24d099ad
5
5
  SHA512:
6
- metadata.gz: 5c9fd2d2e1e416cc28da978ba219c6ff3c4202c8f99a8acb6aa41df8a15d1b1c3e64d007eb78ed18ec2e2846baa3bd037e9ca60c71a8b5bd0d0f7281a54fe616
7
- data.tar.gz: a18d4667ceb7cd90e2d9b323ab0c17c4f96299a1018a9f58b1c5ff883f52e9fe47f11fbf70cda146f9626830c54362eb78e445136e68decc53d57454c69f4020
6
+ metadata.gz: c5631cd425804a69ec3415a1354068007bad120f9ea1825200f0bf8fef2c662d5ec5916e899c59a485c874dacb03d819d87dfbb077d941267e1497f5fd66e603
7
+ data.tar.gz: 37aaf0c880273988833194e43803c8caa006f73ce5083f3dd3842ce0e8e9fd14ddc927ef92f8420f0a55bbfb79749287cbbfa495a1f0742f6e67b3ba2d1256f6
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- logger_facade (0.3.1)
4
+ logger_facade (0.3.2)
5
5
  airbrake (~> 4.0)
6
6
  hashie (~> 3.2)
7
7
  sucker_punch (~> 1.1)
data/README.md CHANGED
@@ -174,10 +174,8 @@ LoggerFacade::Manager.use(plugin)
174
174
  ### LoggerFacade::Plugins::Logstash
175
175
 
176
176
  ```ruby
177
- # this is default config for Console plugin
178
- config = { level: :debug }
179
-
180
- # configuration is optional in Logstash plugin
177
+ # required paramaters config
178
+ config = { level: :debug, filename: '/tmp/log.logstash' }
181
179
  plugin = LoggerFacade::Plugins::Logstash.new(config);
182
180
  LoggerFacade::Manager.use(plugin)
183
181
 
@@ -185,7 +183,8 @@ LoggerFacade::Manager.use(plugin)
185
183
  # by default logrotation is disabled and you should consider using a proper tool such logrotate.
186
184
  # but you can use some Logger (from stdlib) options.
187
185
  config = {
188
- level: :debug
186
+ level: :debug,
187
+ filename: '/tmp/log.logstash',
189
188
  device: {
190
189
  shift_age: 'daily', # (optional) daily/weekly/monthly
191
190
  shift_size: 1024000 # (optional) bytes
@@ -194,6 +193,8 @@ config = {
194
193
 
195
194
  ```
196
195
 
196
+ **NOTE:** When using with ruby daemons gem, use absolute path for file configuration.
197
+
197
198
  ## LoggerFacade::Plugins
198
199
 
199
200
  If you wanna use a custom plugin you just need to use an object that responds to the following contract:
@@ -8,8 +8,12 @@ module LoggerFacade::Plugins
8
8
  super("LoggerFacade::Plugins::Logstash", configuration)
9
9
 
10
10
  fail "Invalid configuration filename: #{config.filename}" unless config.filename
11
+ end
12
+
13
+ private
11
14
 
12
- @logdevice = if config["device"]
15
+ def logdevice
16
+ @logdevice ||= if config["device"]
13
17
  shift_age = config.device["shift_age"]
14
18
  shift_size = config.device["shift_size"]
15
19
  LogDeviceWithRotation.new(config.filename, shift_age, shift_size)
@@ -18,10 +22,6 @@ module LoggerFacade::Plugins
18
22
  end
19
23
  end
20
24
 
21
- private
22
-
23
- attr_reader :logdevice
24
-
25
25
  def log(severity, message, logger, metadata)
26
26
  return unless is_level_active(severity)
27
27
  return unless logdevice
@@ -37,8 +37,8 @@ module LoggerFacade::Plugins
37
37
  '@timestamp' => ts.iso8601,
38
38
  '@fields' => metadata
39
39
  }
40
-
41
- @logdevice.write("#{Yajl::Encoder.encode(json)}\n")
40
+
41
+ logdevice.write("#{Yajl::Encoder.encode(json)}\n")
42
42
  end
43
43
 
44
44
  class LogDeviceWithRotation < ::Logger::LogDevice
@@ -1,3 +1,3 @@
1
1
  module LoggerFacade
2
- VERSION = '0.3.1'
2
+ VERSION = '0.3.2'
3
3
  end
@@ -0,0 +1,29 @@
1
+ describe LoggerFacade::Plugins::Logstash do
2
+
3
+ let(:filename) { "./spec/log.logstash" }
4
+ let(:time) { Time.new(1983, 01, 25, 13, 10, 01, '+00:00') }
5
+
6
+ before(:each) do
7
+ FileUtils.rm(filename) rescue nil
8
+ allow(Time).to receive(:now) { time }
9
+ LoggerFacade::Manager.clear_plugins
10
+ config = { level: :debug, filename: filename }
11
+ plugin = LoggerFacade::Plugins::Logstash.new(config)
12
+ LoggerFacade::Manager.use(plugin)
13
+ end
14
+
15
+ after(:each) do
16
+ FileUtils.rm(filename)
17
+ end
18
+
19
+ let(:log) do
20
+ LoggerFacade::Manager.get_logger 'SPEC_LOGGER'
21
+ end
22
+
23
+ it 'logs to file' do
24
+ log.debug("message info", { context: true })
25
+ logline = "{\"@timestamp\":\"1983-01-25T13:10:01Z\",\"@fields\":{\"context\":true,\"pid\":#{Process.pid},\"severity\":\"debug\",\"logger\":\"SPEC_LOGGER\",\"message\":\"message info\"}}\n"
26
+ expect(File.read(filename)).to eq(logline)
27
+ end
28
+
29
+ end
@@ -16,14 +16,6 @@ require 'logger_facade'
16
16
 
17
17
  Dir['spec/support/**/*.rb'].each &method(:require)
18
18
 
19
- RSpec.configure do |c|
20
- c.around(:each) do |example|
21
- Timeout::timeout(2) {
22
- example.run
23
- }
24
- end
25
- end
26
-
27
19
  module TimeTestHelper
28
20
  def with_mock_time(t = 0)
29
21
  mc = class <<Time; self; end
@@ -1,5 +1,3 @@
1
- require 'json'
2
-
3
1
  describe LoggerFacade::Plugins::Logstash do
4
2
  include LevelTestHelper
5
3
 
@@ -21,7 +19,8 @@ describe LoggerFacade::Plugins::Logstash do
21
19
  it 'defaults to logdevice without rotation' do
22
20
  expect(LoggerFacade::Plugins::Logstash::LogDeviceWithoutRotation)
23
21
  .to receive(:new).with(filename)
24
- described_class.new(config)
22
+ subject = described_class.new(config)
23
+ subject.debug("logger", "message")
25
24
  end
26
25
 
27
26
  it 'uses ruby Logger config' do
@@ -30,7 +29,8 @@ describe LoggerFacade::Plugins::Logstash do
30
29
  config[:device] = { shift_age: age, shift_size: size }
31
30
  expect(LoggerFacade::Plugins::Logstash::LogDeviceWithRotation)
32
31
  .to receive(:new).with(filename, age, size)
33
- described_class.new(config)
32
+ subject = described_class.new(config)
33
+ subject.debug("logger", "message")
34
34
  end
35
35
 
36
36
  it 'raises an error on invalid filename configuration' do
@@ -76,7 +76,7 @@ describe LoggerFacade::Plugins::Logstash do
76
76
  it("writes a valid json") do
77
77
  expect(file).to receive(:write) do |msg|
78
78
  data = nil
79
- expect { data = JSON.parse(msg) }.not_to raise_exception
79
+ expect { data = Yajl::Parser.new.parse(msg) }.not_to raise_exception
80
80
  expect(data).to be
81
81
  end
82
82
  subject.send(severity, logger, message)
@@ -96,7 +96,7 @@ describe LoggerFacade::Plugins::Logstash do
96
96
 
97
97
  it("writes logstash timestamp format") do
98
98
  expect(file).to receive(:write) do |msg|
99
- data = JSON.parse(msg)
99
+ data = Yajl::Parser.new.parse(msg)
100
100
  expect(data["@timestamp"]).to eq(time.iso8601)
101
101
  end
102
102
  subject.send(severity, logger, message)
@@ -104,7 +104,7 @@ describe LoggerFacade::Plugins::Logstash do
104
104
 
105
105
  it("uses metadata timestamp") do
106
106
  expect(file).to receive(:write) do |msg|
107
- data = JSON.parse(msg)
107
+ data = Yajl::Parser.new.parse(msg)
108
108
  expect(data["@timestamp"]).to eq(ts.iso8601)
109
109
  end
110
110
  subject.send(severity, logger, message, metadata: metadata)
@@ -112,7 +112,7 @@ describe LoggerFacade::Plugins::Logstash do
112
112
 
113
113
  it("doesn't write field timestamp") do
114
114
  expect(file).to receive(:write) do |msg|
115
- data = JSON.parse(msg)["@fields"]
115
+ data = Yajl::Parser.new.parse(msg)["@fields"]
116
116
  expect(data["timestamp"]).to be_nil
117
117
  end
118
118
  subject.send(severity, logger, message, metadata: metadata)
@@ -121,7 +121,7 @@ describe LoggerFacade::Plugins::Logstash do
121
121
 
122
122
  it("writes fields") do
123
123
  expect(file).to receive(:write) do |msg|
124
- data = JSON.parse(msg)
124
+ data = Yajl::Parser.new.parse(msg)
125
125
  expect(data["@fields"]).to be
126
126
  end
127
127
  subject.send(severity, logger, message)
@@ -129,7 +129,7 @@ describe LoggerFacade::Plugins::Logstash do
129
129
 
130
130
  it("writes severity") do
131
131
  expect(file).to receive(:write) do |msg|
132
- data = JSON.parse(msg)["@fields"]
132
+ data = Yajl::Parser.new.parse(msg)["@fields"]
133
133
  expect(data["severity"]).to eq(severity.to_s)
134
134
  end
135
135
  subject.send(severity, logger, message)
@@ -137,7 +137,7 @@ describe LoggerFacade::Plugins::Logstash do
137
137
 
138
138
  it("writes logger") do
139
139
  expect(file).to receive(:write) do |msg|
140
- data = JSON.parse(msg)["@fields"]
140
+ data = Yajl::Parser.new.parse(msg)["@fields"]
141
141
  expect(data["logger"]).to eq(logger)
142
142
  end
143
143
  subject.send(severity, logger, message)
@@ -145,7 +145,7 @@ describe LoggerFacade::Plugins::Logstash do
145
145
 
146
146
  it("writes message") do
147
147
  expect(file).to receive(:write) do |msg|
148
- data = JSON.parse(msg)["@fields"]
148
+ data = Yajl::Parser.new.parse(msg)["@fields"]
149
149
  expect(data["message"]).to eq(message)
150
150
  end
151
151
  subject.send(severity, logger, message)
@@ -154,7 +154,7 @@ describe LoggerFacade::Plugins::Logstash do
154
154
  it("writes other metadata fields") do
155
155
  metadata = { context: true }
156
156
  expect(file).to receive(:write) do |msg|
157
- data = JSON.parse(msg)["@fields"]
157
+ data = Yajl::Parser.new.parse(msg)["@fields"]
158
158
  expect(data["context"]).to eq(true)
159
159
  end
160
160
  subject.send(severity, logger, message, metadata: metadata)
@@ -165,7 +165,7 @@ describe LoggerFacade::Plugins::Logstash do
165
165
  it('writes the exception message') do
166
166
  error = Exception.new('test log')
167
167
  expect(file).to receive(:write) do |msg|
168
- data = JSON.parse(msg)["@fields"]
168
+ data = Yajl::Parser.new.parse(msg)["@fields"]
169
169
  expect(data["message"]).to eq("test log")
170
170
  end
171
171
  subject.send(severity, logger, error)
@@ -175,7 +175,7 @@ describe LoggerFacade::Plugins::Logstash do
175
175
  error = Exception.new('test log')
176
176
  error.set_backtrace "stacktrace"
177
177
  expect(file).to receive(:write) do |msg|
178
- data = JSON.parse(msg)["@fields"]
178
+ data = Yajl::Parser.new.parse(msg)["@fields"]
179
179
  expect(data["backtrace"]).to eq(error.backtrace)
180
180
  end
181
181
  subject.send(severity, logger, error)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logger_facade
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pedro Januário
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-09 00:00:00.000000000 Z
11
+ date: 2015-01-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -208,6 +208,7 @@ files:
208
208
  - lib/logger_facade/plugins/logstash.rb
209
209
  - lib/logger_facade/version.rb
210
210
  - logger_facade.gemspec
211
+ - spec/integration/plugins/logstash_spec.rb
211
212
  - spec/spec_helper.rb
212
213
  - spec/unit/log_spec.rb
213
214
  - spec/unit/loggable_spec.rb
@@ -243,6 +244,7 @@ signing_key:
243
244
  specification_version: 4
244
245
  summary: Logger Facade library
245
246
  test_files:
247
+ - spec/integration/plugins/logstash_spec.rb
246
248
  - spec/spec_helper.rb
247
249
  - spec/unit/log_spec.rb
248
250
  - spec/unit/loggable_spec.rb