log2json 0.1.19 → 0.1.20
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/bin/tail-log.sh +7 -3
- data/lib/log2json.rb +19 -16
- data/log2json.gemspec +1 -1
- metadata +2 -2
data/bin/tail-log.sh
CHANGED
@@ -65,9 +65,13 @@ build_tail_args() {
|
|
65
65
|
fi
|
66
66
|
|
67
67
|
# at this point, no last position was recorded in the SINCEDB for fpath,
|
68
|
-
# in this case we'd tail from the end of file
|
69
|
-
|
70
|
-
|
68
|
+
# in this case we'd tail from the end of file unless the FROM_START env
|
69
|
+
# var is set.
|
70
|
+
if [ "$FROM_START" ]; then
|
71
|
+
TAIL_ARGS[$((i++))]="-n+$FROM_START"
|
72
|
+
else
|
73
|
+
TAIL_ARGS[$((i++))]="-n+$(( nlines + 1 ))"
|
74
|
+
fi
|
71
75
|
# Note: we can't just ask tail to seek to the end here(ie, with -n0) since
|
72
76
|
# then we'd lose track of the line count.
|
73
77
|
# Note: if fpath doesn't exist yet, then the above evaluates to "-n+1", which
|
data/lib/log2json.rb
CHANGED
@@ -3,7 +3,7 @@ require 'grok-pure'
|
|
3
3
|
|
4
4
|
module Log2Json
|
5
5
|
|
6
|
-
def self.main(filters, opts={})
|
6
|
+
def self.main(filters, opts={}, &block)
|
7
7
|
output = opts[:output] || STDOUT
|
8
8
|
spitter = opts[:spitter]
|
9
9
|
if spitter.nil?
|
@@ -15,15 +15,23 @@ def self.main(filters, opts={})
|
|
15
15
|
end
|
16
16
|
spitter = ::Log2Json::Spitter.new(STDIN, ENV['type'], config)
|
17
17
|
end
|
18
|
+
if block.nil?
|
19
|
+
block = proc do |rec|
|
20
|
+
if not rec['@timestamp'].nil?
|
21
|
+
output.write(rec.to_json() << "\n")
|
22
|
+
output.flush()
|
23
|
+
# NOTE: Ruby's built-in json module, by default, doesn't output any
|
24
|
+
# literal newline characters while serializing. So using
|
25
|
+
# newlines as json record separator is fine here.
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
18
29
|
spitter.each_record do |rec|
|
19
|
-
filters[rec['@type']].each
|
20
|
-
|
21
|
-
|
22
|
-
output.flush()
|
23
|
-
# NOTE: Ruby's built-in json module, by default, doesn't output any
|
24
|
-
# literal newline characters while serializing. So using
|
25
|
-
# newlines as json record separator is fine here.
|
30
|
+
filters[rec['@type']].each do |f|
|
31
|
+
rec = f.filter(rec)
|
32
|
+
break if rec.nil?
|
26
33
|
end
|
34
|
+
block.call(rec) unless rec.nil?
|
27
35
|
end
|
28
36
|
end
|
29
37
|
|
@@ -156,9 +164,7 @@ class GrokFilter
|
|
156
164
|
# Any '@' key-values configured for this filter will also
|
157
165
|
# be added to the record after merging the captured groups.
|
158
166
|
#
|
159
|
-
# Return the record at the end
|
160
|
-
# If the '@timestamp' attribute is removed from a record then the record will
|
161
|
-
# be dropped.
|
167
|
+
# Return the record at the end.
|
162
168
|
def filter(record)
|
163
169
|
grok, match = @pile.match(record['@message'])
|
164
170
|
if match
|
@@ -195,13 +201,10 @@ class GrokFilter
|
|
195
201
|
end
|
196
202
|
(fields['filtered_by'] ||= []) << name
|
197
203
|
if @filter_block
|
198
|
-
@filter_block.call(record)
|
199
|
-
else
|
200
|
-
record
|
204
|
+
record = @filter_block.call(record)
|
201
205
|
end
|
202
|
-
else
|
203
|
-
nil
|
204
206
|
end
|
207
|
+
record
|
205
208
|
end
|
206
209
|
end # end class GrokFilter
|
207
210
|
|
data/log2json.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'log2json'
|
3
|
-
s.version = '0.1.
|
3
|
+
s.version = '0.1.20'
|
4
4
|
s.summary = "Read, filter and ship logs. ie, poor man's roll-your-own, light-weight logstash replacement."
|
5
5
|
s.description = IO.read(File.join(File.dirname(__FILE__), 'README'))
|
6
6
|
s.authors = ['Jack Kuan']
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: log2json
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.20
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-11-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: jls-grok
|