log2json 0.1.8 → 0.1.9

Sign up to get free protection for your applications and to get access to all the features.
data/README CHANGED
@@ -28,17 +28,17 @@ work, but are not tested. The input protocol expected by Log2json is very
28
28
  simple and documented in the source code.
29
29
 
30
30
  ** The `tail-log` script uses a patched version of `tail` from the GNU coreutils
31
- package. A binary of the `tail` utility compiled for Ubuntu 12.04 LTS is
32
- included with the Log2json gem. If the binary doesn't work for your
33
- distribution, then you'll need to get GNU coreutils-8.13, apply the patch(it
34
- can be found in the src/ directory of the installed gem), and then replace
35
- the bin/tail binary in the directory of the installed gem with your version
36
- of the binary. **
31
+ package. A binary of the `tail` utility compiled for Ubuntu 12.04 LTS is
32
+ included with the Log2json gem. If the binary doesn't work for your
33
+ distribution, then you'll need to get GNU coreutils-8.13, apply the patch(it
34
+ can be found in the src/ directory of the installed gem), and then replace
35
+ the bin/tail binary in the directory of the installed gem with your version
36
+ of the binary. **
37
37
 
38
38
  P.S. If you know of a way to configure and compile ONLY the tail program in
39
- coreutils, please let me know! The reason I'm not building tail post gem
40
- installation is that it takes too long to configure && make because that
41
- actually builds every utilties in coreutils.
39
+ coreutils, please let me know! The reason I'm not building tail post gem
40
+ installation is that it takes too long to configure && make because that
41
+ actually builds every utilties in coreutils.
42
42
 
43
43
 
44
44
  For shipping logs to Redis, there's the `lines2redis` script that can be used as
@@ -61,6 +61,9 @@ On the Redis server:
61
61
  redis_queue=jsonlogs redis2es host.to.es.server
62
62
 
63
63
 
64
+ Resources that help writing log2json filters:
64
65
 
65
-
66
+ - look at log2json.rb source and example filters
67
+ - http://grokdebug.herokuapp.com/
68
+ - http://www.ruby-doc.org/stdlib-1.9.3/libdoc/date/rdoc/DateTime.html#method-i-strftime
66
69
 
data/bin/track-tails CHANGED
@@ -41,7 +41,12 @@ while line = gets()
41
41
  fstat = File.stat(fpath)
42
42
  @fmap[fpath] = [fstat.ino, fstat.size, 0]
43
43
  end
44
- STDOUT.write(line); STDOUT.flush()
44
+ if line =~ /<==$/
45
+ STDOUT.write(line); STDOUT.flush()
46
+ # Note: we don't print those '==> ... <== [....]' header lines that
47
+ # got added by our patch to tail because they might not be followed
48
+ # by lines from the indicating files.(eg, when a new empty file appears)
49
+ end
45
50
  next
46
51
  end
47
52
  STDOUT.write(line); STDOUT.flush()
@@ -0,0 +1,9 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = 'log2json-loggers'
3
+ s.version = '0.1.5'
4
+ s.summary = "Custom loggers for Rails and Unicorn that log to another file in addition to what their default loggers do."
5
+ s.description = IO.read(File.join(File.dirname(__FILE__), 'README'))
6
+ s.authors = ['Jack Kuan']
7
+ s.email = 'jack.kuan@thescore.com'
8
+ s.files = ['lib/log2json/railslogger.rb']
9
+ end
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.8'
3
+ s.version = '0.1.9'
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,133 +1,105 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: log2json
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 1
8
- - 8
9
- version: 0.1.8
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.9
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Jack Kuan
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2013-09-17 00:00:00 -04:00
18
- default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2013-10-01 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: jls-grok
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- requirements:
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
25
19
  - - ~>
26
- - !ruby/object:Gem::Version
27
- segments:
28
- - 0
29
- - 10
30
- - 10
20
+ - !ruby/object:Gem::Version
31
21
  version: 0.10.10
32
22
  type: :runtime
33
- version_requirements: *id001
34
- - !ruby/object:Gem::Dependency
35
- name: redis
36
23
  prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
38
- requirements:
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
39
27
  - - ~>
40
- - !ruby/object:Gem::Version
41
- segments:
42
- - 3
43
- - 0
44
- - 2
28
+ - !ruby/object:Gem::Version
29
+ version: 0.10.10
30
+ - !ruby/object:Gem::Dependency
31
+ name: redis
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
45
37
  version: 3.0.2
46
38
  type: :runtime
47
- version_requirements: *id002
48
- - !ruby/object:Gem::Dependency
49
- name: persistent_http
50
39
  prerelease: false
51
- requirement: &id003 !ruby/object:Gem::Requirement
52
- requirements:
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
53
43
  - - ~>
54
- - !ruby/object:Gem::Version
55
- segments:
56
- - 1
57
- - 0
58
- - 5
44
+ - !ruby/object:Gem::Version
45
+ version: 3.0.2
46
+ - !ruby/object:Gem::Dependency
47
+ name: persistent_http
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
59
53
  version: 1.0.5
60
54
  type: :runtime
61
- version_requirements: *id003
62
- description: |+
63
- Log2json lets you read, filter and send logs as JSON objects via Unix pipes.
64
- It is inspired by Logstash, and is meant to be compatible with it at the JSON
65
- event/record level so that it can easily work with Kibana.
66
-
67
- Reading logs is done via a shell script(eg, `tail`) running in its own process.
68
- You then configure(see the `syslog2json` or the `nginxlog2json` script for
69
- examples) and run your filters in Ruby using the `Log2Json` module and its
70
- contained helper classes.
71
-
72
- `Log2Json` reads from stdin the logs(one log record per line), parses the log
73
- lines into JSON records, and then serializes and writes the records to stdout,
74
- which then can be piped to another process for processing or sending it to
75
- somewhere else.
76
-
77
- Currently, Log2json ships with a `tail-log` script that can be run as the input
78
- process. It's the same as using the Linux `tail` utility with the `-v -F`
79
- options except that it also tracks the positions(as the numbers of lines read
80
- from the beginning of the files) in a few files in the file system so that if the
81
- input process is interrupted, it can continue reading from where it left off
82
- next time if the files had been followed. This feature is similar to the sincedb
83
- feature in Logstash's file input.
84
-
85
- Note: If you don't need the tracking feature(ie, you are fine with always
86
- tailling from the end of file with `-v -F -n0`), then you can just use the `tail`
87
- utility that comes with your Linux distribution.(Or more specifically, the
88
- `tail` from the GNU coreutils). Other versions of the `tail` utility may also
89
- work, but are not tested. The input protocol expected by Log2json is very
90
- simple and documented in the source code.
91
-
92
- ** The `tail-log` script uses a patched version of `tail` from the GNU coreutils
93
- package. A binary of the `tail` utility compiled for Ubuntu 12.04 LTS is
94
- included with the Log2json gem. If the binary doesn't work for your
95
- distribution, then you'll need to get GNU coreutils-8.13, apply the patch(it
96
- can be found in the src/ directory of the installed gem), and then replace
97
- the bin/tail binary in the directory of the installed gem with your version
98
- of the binary. **
99
-
100
- P.S. If you know of a way to configure and compile ONLY the tail program in
101
- coreutils, please let me know! The reason I'm not building tail post gem
102
- installation is that it takes too long to configure && make because that
103
- actually builds every utilties in coreutils.
104
-
105
-
106
- For shipping logs to Redis, there's the `lines2redis` script that can be used as
107
- the output process in the pipe. For shipping logs from Redis to ElasticSearch,
108
- Log2json provides a `redis2es` script.
109
-
110
- Finally here's an example of Log2json in action:
111
-
112
- From a client machine:
113
-
114
- tail-log /var/log/{sys,mail}log /var/log/{kern,auth}.log | syslog2json |
115
- queue=jsonlogs \
116
- flush_size=20 \
117
- flush_interval=30 \
118
- lines2redis host.to.redis.server 6379 0 # use redis DB 0
119
-
120
-
121
- On the Redis server:
122
-
123
- redis_queue=jsonlogs redis2es host.to.es.server
124
-
125
-
126
-
127
-
128
-
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 1.0.5
62
+ description: ! "Log2json lets you read, filter and send logs as JSON objects via Unix
63
+ pipes.\nIt is inspired by Logstash, and is meant to be compatible with it at the
64
+ JSON\nevent/record level so that it can easily work with Kibana. \n\nReading logs
65
+ is done via a shell script(eg, `tail`) running in its own process.\nYou then configure(see
66
+ the `syslog2json` or the `nginxlog2json` script for\nexamples) and run your filters
67
+ in Ruby using the `Log2Json` module and its\ncontained helper classes.\n\n`Log2Json`
68
+ reads from stdin the logs(one log record per line), parses the log\nlines into JSON
69
+ records, and then serializes and writes the records to stdout,\nwhich then can be
70
+ piped to another process for processing or sending it to\nsomewhere else.\n\nCurrently,
71
+ Log2json ships with a `tail-log` script that can be run as the input\nprocess. It's
72
+ the same as using the Linux `tail` utility with the `-v -F`\noptions except that
73
+ it also tracks the positions(as the numbers of lines read\nfrom the beginning of
74
+ the files) in a few files in the file system so that if the\ninput process is interrupted,
75
+ it can continue reading from where it left off\nnext time if the files had been
76
+ followed. This feature is similar to the sincedb\nfeature in Logstash's file input.\n\nNote:
77
+ If you don't need the tracking feature(ie, you are fine with always\ntailling from
78
+ the end of file with `-v -F -n0`), then you can just use the `tail`\nutility that
79
+ comes with your Linux distribution.(Or more specifically, the\n`tail` from the GNU
80
+ coreutils). Other versions of the `tail` utility may also\nwork, but are not tested.
81
+ The input protocol expected by Log2json is very\nsimple and documented in the source
82
+ code.\n\n** The `tail-log` script uses a patched version of `tail` from the GNU
83
+ coreutils\npackage. A binary of the `tail` utility compiled for Ubuntu 12.04 LTS
84
+ is\nincluded with the Log2json gem. If the binary doesn't work for your\ndistribution,
85
+ then you'll need to get GNU coreutils-8.13, apply the patch(it\ncan be found in
86
+ the src/ directory of the installed gem), and then replace\nthe bin/tail binary
87
+ in the directory of the installed gem with your version\nof the binary. ** \n\nP.S.
88
+ If you know of a way to configure and compile ONLY the tail program in\ncoreutils,
89
+ please let me know! The reason I'm not building tail post gem\ninstallation is that
90
+ it takes too long to configure && make because that\nactually builds every utilties
91
+ in coreutils.\n\n\nFor shipping logs to Redis, there's the `lines2redis` script
92
+ that can be used as\nthe output process in the pipe. For shipping logs from Redis
93
+ to ElasticSearch,\nLog2json provides a `redis2es` script.\n\nFinally here's an example
94
+ of Log2json in action:\n\nFrom a client machine:\n\n tail-log /var/log/{sys,mail}log
95
+ /var/log/{kern,auth}.log | syslog2json |\n queue=jsonlogs \\\n flush_size=20
96
+ \\\n flush_interval=30 \\\n lines2redis host.to.redis.server 6379
97
+ 0 # use redis DB 0\n\n\nOn the Redis server:\n\n redis_queue=jsonlogs redis2es
98
+ host.to.es.server\n\n\nResources that help writing log2json filters:\n\n - look
99
+ at log2json.rb source and example filters\n - http://grokdebug.herokuapp.com/\n
100
+ \ - http://www.ruby-doc.org/stdlib-1.9.3/libdoc/date/rdoc/DateTime.html#method-i-strftime\n\n"
129
101
  email: jack.kuan@thescore.com
130
- executables:
102
+ executables:
131
103
  - tail-log
132
104
  - track-tails
133
105
  - syslog2json
@@ -135,10 +107,8 @@ executables:
135
107
  - lines2redis
136
108
  - redis2es
137
109
  extensions: []
138
-
139
110
  extra_rdoc_files: []
140
-
141
- files:
111
+ files:
142
112
  - Gemfile
143
113
  - Gemfile.lock
144
114
  - README
@@ -155,38 +125,34 @@ files:
155
125
  - lib/log2json/filters/nginx_access.rb
156
126
  - lib/log2json/filters/syslog.rb
157
127
  - lib/log2json/railslogger.rb
128
+ - log2json-loggers.gemspec
158
129
  - log2json.gemspec
159
130
  - src/coreutils-8.13_tail.patch
160
131
  - src/tail.c
161
- has_rdoc: true
162
132
  homepage:
163
133
  licenses: []
164
-
165
134
  post_install_message:
166
135
  rdoc_options: []
167
-
168
- require_paths:
136
+ require_paths:
169
137
  - lib
170
- required_ruby_version: !ruby/object:Gem::Requirement
171
- requirements:
172
- - - ">="
173
- - !ruby/object:Gem::Version
174
- segments:
175
- - 0
176
- version: "0"
177
- required_rubygems_version: !ruby/object:Gem::Requirement
178
- requirements:
179
- - - ">="
180
- - !ruby/object:Gem::Version
181
- segments:
182
- - 0
183
- version: "0"
138
+ required_ruby_version: !ruby/object:Gem::Requirement
139
+ none: false
140
+ requirements:
141
+ - - ! '>='
142
+ - !ruby/object:Gem::Version
143
+ version: '0'
144
+ required_rubygems_version: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ! '>='
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
184
150
  requirements: []
185
-
186
151
  rubyforge_project:
187
- rubygems_version: 1.3.6
152
+ rubygems_version: 1.8.23
188
153
  signing_key:
189
154
  specification_version: 3
190
- summary: Read, filter and ship logs. ie, poor man's roll-your-own, light-weight logstash replacement.
155
+ summary: Read, filter and ship logs. ie, poor man's roll-your-own, light-weight logstash
156
+ replacement.
191
157
  test_files: []
192
-
158
+ has_rdoc: