dlogger 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +2 -0
- data/lib/dlogger/logger.rb +6 -2
- data/lib/dlogger/outputs/em/logstash.rb +3 -3
- data/lib/dlogger/outputs/em/syslog.rb +37 -0
- data/lib/dlogger/version.rb +1 -1
- data/specs/lib/logger_spec.rb +15 -0
- data/specs/lib/outputs/em/syslog_spec.rb +39 -0
- metadata +8 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a66b797653f4bdb8bd82f224a9c5db694a67b935
|
4
|
+
data.tar.gz: cbd43d32888668b98b1a1e2f7abb9b03df6208bb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 310fc64c152285818a836014ca4a54ff4eed34f953beab9a3f922d06329d2c4b9185fd42e518c381db63ea944eb604af51d723dd9563d31052abe1a435078faf
|
7
|
+
data.tar.gz: 829ce6c67279160ededa757b2befc52693223bd2ccb7fc179421afefe8d08e8073e05f5b5338f23b57923616c577329b066be69b4ee5e8b2c2c2e6c68017c5c1
|
data/Gemfile
CHANGED
data/lib/dlogger/logger.rb
CHANGED
@@ -7,7 +7,7 @@ module DLogger
|
|
7
7
|
@outputs = []
|
8
8
|
|
9
9
|
# initialize context
|
10
|
-
|
10
|
+
init_context
|
11
11
|
end
|
12
12
|
|
13
13
|
##
|
@@ -110,11 +110,15 @@ module DLogger
|
|
110
110
|
|
111
111
|
private
|
112
112
|
|
113
|
+
def init_context
|
114
|
+
Thread.current["#{@name}_dlogger_contexts"] = []
|
115
|
+
end
|
116
|
+
|
113
117
|
##
|
114
118
|
# Store the context in fiber local variables, each
|
115
119
|
# Thread/Fiber gets its own.
|
116
120
|
def context
|
117
|
-
Thread.current["#{@name}_dlogger_contexts"]
|
121
|
+
Thread.current["#{@name}_dlogger_contexts"]
|
118
122
|
end
|
119
123
|
|
120
124
|
##
|
@@ -1,5 +1,5 @@
|
|
1
1
|
gem 'eventmachine'; require 'eventmachine'
|
2
|
-
gem '
|
2
|
+
gem 'multi_json'; require 'multi_json'
|
3
3
|
|
4
4
|
module DLogger
|
5
5
|
module Output
|
@@ -31,9 +31,9 @@ module DLogger
|
|
31
31
|
|
32
32
|
def dispatch(msg, metadata)
|
33
33
|
metadata = metadata.merge(:message => msg)
|
34
|
-
@socket.send_data(
|
34
|
+
@socket.send_data( MultiJson.encode(metadata) + "\n" )
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
38
|
end
|
39
|
-
end
|
39
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
gem 'eventmachine'; require 'eventmachine'
|
2
|
+
gem 'multi_json'; require 'multi_json'
|
3
|
+
gem 'syslog_protocol'; require 'syslog_protocol'
|
4
|
+
|
5
|
+
module DLogger
|
6
|
+
module Output
|
7
|
+
|
8
|
+
##
|
9
|
+
# This is not strictly a standard syslog output but it is designed
|
10
|
+
# to be used with rsyslog as a pass trhough to send data to elasticsearch
|
11
|
+
#
|
12
|
+
class Syslog < Base
|
13
|
+
def initialize(host, port, bind_address: '0.0.0.0')
|
14
|
+
@host = host
|
15
|
+
@port = port
|
16
|
+
|
17
|
+
@socket = EM::open_datagram_socket(bind_address, 0)
|
18
|
+
end
|
19
|
+
|
20
|
+
def dispatch(msg, metadata)
|
21
|
+
metadata = metadata.merge(message: msg)
|
22
|
+
|
23
|
+
p = SyslogProtocol::Packet.new
|
24
|
+
p.hostname = "unused"
|
25
|
+
p.facility = "kern"
|
26
|
+
p.severity = "info"
|
27
|
+
p.tag = "app"
|
28
|
+
p.content = MultiJson.encode(metadata)
|
29
|
+
|
30
|
+
@socket.send_datagram(p.to_s, @host, @port)
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
data/lib/dlogger/version.rb
CHANGED
data/specs/lib/logger_spec.rb
CHANGED
@@ -47,6 +47,21 @@ describe "Logger" do
|
|
47
47
|
|
48
48
|
end
|
49
49
|
|
50
|
+
should 'keep pushed context' do
|
51
|
+
@logger.expects(:dispatch).with('msg1', id: 43, global: 'A')
|
52
|
+
@logger.expects(:dispatch).with('msg2', id: 43, user: 'john', global: 'A')
|
53
|
+
@logger.expects(:dispatch).with('msg3', id: 43, global: 'A')
|
54
|
+
|
55
|
+
@logger.push_context(global: 'A')
|
56
|
+
@logger.log('msg1', id: 43)
|
57
|
+
|
58
|
+
@logger.with_context(user: ->{ "john" } ) do
|
59
|
+
@logger.log('msg2', id: 43)
|
60
|
+
end
|
61
|
+
|
62
|
+
@logger.log('msg3', id: 43)
|
63
|
+
end
|
64
|
+
|
50
65
|
end
|
51
66
|
|
52
67
|
describe 'with extension context' do
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require_relative "../../../common"
|
2
|
+
|
3
|
+
require 'dlogger/outputs/em/syslog'
|
4
|
+
|
5
|
+
$n = 0
|
6
|
+
|
7
|
+
describe "Syslog Output" do
|
8
|
+
before do
|
9
|
+
@port = 4000 + ($n += 1)
|
10
|
+
@received_data = ""
|
11
|
+
|
12
|
+
tmp = @received_data
|
13
|
+
|
14
|
+
@handler_class = Class.new(EM::Connection) do
|
15
|
+
define_method(:receive_data) do |data|
|
16
|
+
tmp << data
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
|
21
|
+
# @server = EM::start_server('127.0.0.1', @port, @handler_class)
|
22
|
+
@server = EM::open_datagram_socket('127.0.0.1', @port, @handler_class)
|
23
|
+
|
24
|
+
@logger = DLogger::Output::Syslog.new('127.0.0.1', @port)
|
25
|
+
end
|
26
|
+
|
27
|
+
should 'send message to syslog via UDP' do
|
28
|
+
t = "Apr 15 16:46:32"
|
29
|
+
|
30
|
+
freeze_time(Time.parse(t)) do
|
31
|
+
@logger.dispatch('a log message', {:data => "something", :n => 21})
|
32
|
+
|
33
|
+
wait(0.1) do
|
34
|
+
@received_data.should == %{<6>#{t} unused app: {"data":"something","n":21,"message":"a log message"}}
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dlogger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Julien Ammous
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-04-15 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Advanced logger allowing you to include metadata with your messages
|
14
14
|
email:
|
@@ -17,7 +17,7 @@ executables: []
|
|
17
17
|
extensions: []
|
18
18
|
extra_rdoc_files: []
|
19
19
|
files:
|
20
|
-
- .gitignore
|
20
|
+
- ".gitignore"
|
21
21
|
- ChangeLog
|
22
22
|
- Gemfile
|
23
23
|
- Guardfile
|
@@ -39,6 +39,7 @@ files:
|
|
39
39
|
- lib/dlogger/outputs/base.rb
|
40
40
|
- lib/dlogger/outputs/em/logstash.rb
|
41
41
|
- lib/dlogger/outputs/em/splunkstorm.rb
|
42
|
+
- lib/dlogger/outputs/em/syslog.rb
|
42
43
|
- lib/dlogger/outputs/stdlib_logger.rb
|
43
44
|
- lib/dlogger/outputs/stdout.rb
|
44
45
|
- lib/dlogger/version.rb
|
@@ -47,6 +48,7 @@ files:
|
|
47
48
|
- specs/lib/logger_spec.rb
|
48
49
|
- specs/lib/outputs/em/logstash_spec.rb
|
49
50
|
- specs/lib/outputs/em/splunkstorm_spec.rb
|
51
|
+
- specs/lib/outputs/em/syslog_spec.rb
|
50
52
|
- specs/lib/outputs/stdlib_logger_spec.rb
|
51
53
|
- specs/lib/outputs/stdout_spec.rb
|
52
54
|
homepage: ''
|
@@ -58,17 +60,17 @@ require_paths:
|
|
58
60
|
- lib
|
59
61
|
required_ruby_version: !ruby/object:Gem::Requirement
|
60
62
|
requirements:
|
61
|
-
- -
|
63
|
+
- - ">="
|
62
64
|
- !ruby/object:Gem::Version
|
63
65
|
version: '0'
|
64
66
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
65
67
|
requirements:
|
66
|
-
- -
|
68
|
+
- - ">="
|
67
69
|
- !ruby/object:Gem::Version
|
68
70
|
version: '0'
|
69
71
|
requirements: []
|
70
72
|
rubyforge_project:
|
71
|
-
rubygems_version: 2.
|
73
|
+
rubygems_version: 2.2.2
|
72
74
|
signing_key:
|
73
75
|
specification_version: 4
|
74
76
|
summary: 'Dynamic logger: add a context to your log messages'
|