logplex 0.0.1.pre → 0.0.1.pre.2
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/README.md +18 -9
- data/lib/logplex/configuration.rb +1 -0
- data/lib/logplex/message.rb +12 -1
- data/lib/logplex/version.rb +1 -1
- data/spec/logplex/message_spec.rb +19 -0
- metadata +9 -9
data/README.md
CHANGED
@@ -2,18 +2,19 @@
|
|
2
2
|
|
3
3
|
Publish and Consume Logplex messages
|
4
4
|
|
5
|
-
Logplex is the Heroku log router, and can be found
|
5
|
+
Logplex is the Heroku log router, and can be found
|
6
|
+
[here](https://github.com/heroku/logplex).
|
6
7
|
|
7
8
|
### Publishing messages
|
8
9
|
|
9
10
|
```ruby
|
10
11
|
publisher = Logplex::Publisher.new(logplex_token, logplex_url)
|
11
|
-
publisher.publish("
|
12
|
-
|
12
|
+
publisher.publish("There's a lady who's sure, all that glitters is gold",
|
13
|
+
process: 'worker.2', host: 'some-host')
|
13
14
|
```
|
14
15
|
|
15
|
-
Passing an array of messages to the `#publish` method will publish them all in
|
16
|
-
so some latency optimization is possible:
|
16
|
+
Passing an array of messages to the `#publish` method will publish them all in
|
17
|
+
one request, so some latency optimization is possible:
|
17
18
|
|
18
19
|
```ruby
|
19
20
|
publisher.publish [ "And as we wind on down the road",
|
@@ -22,6 +23,14 @@ publisher.publish [ "And as we wind on down the road",
|
|
22
23
|
"Who shines white light and wants to show"]
|
23
24
|
```
|
24
25
|
|
26
|
+
The message can also be passed in the form of a Hash, in which case it is
|
27
|
+
formatted as machine readble key/value pairs suitable for metrics collection,
|
28
|
+
eg: [log2viz](https://blog.heroku.com/archives/2013/3/19/log2viz)
|
29
|
+
|
30
|
+
```ruby
|
31
|
+
publisher.publish { vocals: 'Robert Plant', guitar: 'Jimmy Page' }
|
32
|
+
# produces the message: vocals='Robert Plant' guitar='Jimmy Page'
|
33
|
+
```
|
25
34
|
### Consumnig messages
|
26
35
|
|
27
36
|
TBD
|
@@ -38,9 +47,8 @@ Logplex.configure do |config|
|
|
38
47
|
end
|
39
48
|
```
|
40
49
|
|
41
|
-
In the example above, it is now not not necessary to
|
42
|
-
|
43
|
-
a hold of a publisher and publishing messages:
|
50
|
+
In the example above, it is now not not necessary to specify a logplex URL,
|
51
|
+
process or host when getting a hold of a publisher and publishing messages:
|
44
52
|
|
45
53
|
```ruby
|
46
54
|
publisher = Logplex::Publisher.new(logplex_token)
|
@@ -49,4 +57,5 @@ publisher.publish "And she's buying a stairway to heaven"
|
|
49
57
|
|
50
58
|
### License
|
51
59
|
|
52
|
-
Copyright (c) Harold Giménez. Released under the terms of the MIT License found
|
60
|
+
Copyright (c) Harold Giménez. Released under the terms of the MIT License found
|
61
|
+
in the LICENSE file.
|
data/lib/logplex/message.rb
CHANGED
@@ -22,7 +22,7 @@ module Logplex
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def syslog_frame
|
25
|
-
temp = "#{FACILITY_AND_PRIORITY} #{formatted_time} #{@host} #{@token} #{@process} #{@message_id} #{FIELD_DISABLED} #{
|
25
|
+
temp = "#{FACILITY_AND_PRIORITY} #{formatted_time} #{@host} #{@token} #{@process} #{@message_id} #{FIELD_DISABLED} #{formatted_message}"
|
26
26
|
length = temp.length
|
27
27
|
"#{length} #{temp}"
|
28
28
|
end
|
@@ -43,5 +43,16 @@ module Logplex
|
|
43
43
|
@time.to_datetime.rfc3339
|
44
44
|
end
|
45
45
|
end
|
46
|
+
|
47
|
+
def formatted_message
|
48
|
+
if @message.kind_of?(Hash)
|
49
|
+
@message.inject([]) do |res, (key, value)|
|
50
|
+
res << %{#{key}="#{value}"}
|
51
|
+
end.join(' ')
|
52
|
+
else
|
53
|
+
@message
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
46
57
|
end
|
47
58
|
end
|
data/lib/logplex/version.rb
CHANGED
@@ -34,6 +34,11 @@ describe Logplex::Message do
|
|
34
34
|
end
|
35
35
|
|
36
36
|
it 'is invalid with no process or host' do
|
37
|
+
Logplex.configure do |conf|
|
38
|
+
conf.host = nil
|
39
|
+
conf.process = nil
|
40
|
+
end
|
41
|
+
|
37
42
|
message = Logplex::Message.new("a message", token: 't.some-token')
|
38
43
|
message.validate
|
39
44
|
|
@@ -41,4 +46,18 @@ describe Logplex::Message do
|
|
41
46
|
expect(message.errors[:process]).to eq ["can't be nil"]
|
42
47
|
expect(message.errors[:host]).to eq ["can't be nil"]
|
43
48
|
end
|
49
|
+
|
50
|
+
it 'formats logs as key/values when given a hash' do
|
51
|
+
message = Logplex::Message.new(
|
52
|
+
{ vocals: 'Robert Plant', guitar: 'Jimmy Page' },
|
53
|
+
token: 't.some-token',
|
54
|
+
process: 'proc',
|
55
|
+
host: 'host',
|
56
|
+
time: DateTime.parse("1980-08-23 05:31 00:00")
|
57
|
+
)
|
58
|
+
|
59
|
+
expect(message.syslog_frame).to eq(
|
60
|
+
%{101 <134>1 1980-08-23T05:31:00+00:00 host t.some-token proc - - vocals="Robert Plant" guitar="Jimmy Page"}
|
61
|
+
)
|
62
|
+
end
|
44
63
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logplex
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.1.pre
|
4
|
+
version: 0.0.1.pre.2
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2013-05-01 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: valcro
|
16
|
-
requirement: &
|
16
|
+
requirement: &70106294975600 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70106294975600
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rest-client
|
27
|
-
requirement: &
|
27
|
+
requirement: &70106294975040 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70106294975040
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rspec
|
38
|
-
requirement: &
|
38
|
+
requirement: &70106294974360 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70106294974360
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: sham_rack
|
49
|
-
requirement: &
|
49
|
+
requirement: &70106294973520 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70106294973520
|
58
58
|
description: Publish and Consume Logplex messages
|
59
59
|
email:
|
60
60
|
- harold.gimenez@gmail.com
|