ntail 0.1.0 → 0.2.0

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 CHANGED
@@ -53,10 +53,18 @@ Basic Usage
53
53
 
54
54
  $ ntail /var/log/nginx/access.log
55
55
 
56
+ * process an entire nginx log file and pipe each parsed and formatted line into a browser _(depends on the optional `bcat` gem)_
57
+
58
+ $ ntail /var/log/nginx/access.log | bcat
59
+
56
60
  * tail an "active" nginx log file and print each new line to STDOUT _(stop with ^C)_
57
61
 
58
62
  $ tail -f /var/log/nginx/access.log | ntail
59
63
 
64
+ * tail an "active" nginx log file and pipe each new line into a browser _(stop with ^C)_
65
+
66
+ $ tail -f /var/log/nginx/access.log | ntail | bcat
67
+
60
68
  <a name="advanced"/>
61
69
 
62
70
  Advanced Examples
@@ -122,7 +130,7 @@ TODO
122
130
  * implement a native `"-f"` option for ntail, similar to that of `tail(1)`, using e.g. flori's [file-tail gem](https://github.com/flori/file-tail)
123
131
  * implement a `"-i"` option ("ignore exceptions"/"continue processing"), if handling a single line raises an exception
124
132
  * or indeed a reverse `"-r"` option ("re-raise exception"), to immediately stop processing and raising the exception for investigation
125
- * implement (better) support for custom nginx log formats, in addition to [nginx's default "combined" log format](http://wiki.nginx.org/NginxHttpLogModule#log_format).
133
+ * implement (better) support for custom nginx log formats, in addition to [nginx's default "combined" log format](http://wiki.nginx.org/NginxHttpLogModule#log_format) (as well as Apache's various log formats)
126
134
 
127
135
  <a name="acknowledgements"/>
128
136
 
@@ -131,8 +139,9 @@ Acknowledgements
131
139
 
132
140
  * ntail's parsing feature is inspired by an nginx log parser written by [Richard Taylor (moomerman)](https://github.com/moomerman)
133
141
  * parsing and expanding ntail's formatting string is done using nathansobo's quite brilliant [treetop gem](https://github.com/nathansobo/treetop)
134
- * ntail's raw line output is compatible with Fudge's fun and useful [gltail gem](https://github.com/Fudge/gltail)
135
- * Kudos to [Ed James (edjames)](https://github.com/edjames) for recommending the use of [instance_eval][eval] to clean up the DSL
142
+ * ntail's raw line output is compatible with Fudge's fun and useful [gltail gem](https://github.com/Fudge/gltail), as well as the quite amazing [logstalgia](http://code.google.com/p/logstalgia/)
143
+ * kudos to [Ed James (edjames)](https://github.com/edjames) for recommending the use of [instance_eval][eval] to clean up the DSL
144
+ * ntail's HTML formatting was requested/suggested by [Phil Berryman](http://twitter.com/#!/philberryman) and implemented whilst listening to [Leftism](http://en.wikipedia.org/wiki/Leftism_\(album\)), the Leftfield album recommended to me by [Alastair Douglas](http://twitter.com/#!/alastairdouglas)
136
145
 
137
146
  [eval]: https://github.com/pvdb/ntail/commit/b0f40522012b9858c433808cd1f5c21cb455fadd "use instance_eval to simplify the DSL"
138
147
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.2.0
@@ -11,6 +11,7 @@ module NginxTail
11
11
  :interrupted => false,
12
12
  :running => true,
13
13
  :pattern => :nginx,
14
+ :output => :ansi,
14
15
  :exit => 0,
15
16
  }
16
17
 
@@ -32,6 +33,7 @@ module NginxTail
32
33
  def run!
33
34
 
34
35
  LogLine.set_pattern(@options.pattern)
36
+ LogLine.set_output(@options.output)
35
37
 
36
38
  ['TERM', 'INT'].each do |signal|
37
39
  Signal.trap(signal) do
@@ -123,6 +123,12 @@ module NginxTail
123
123
  raw_line.send method, *params
124
124
  end
125
125
 
126
+ @@output_format = :ansi
127
+
128
+ def self.set_output(output)
129
+ @@output_format = output
130
+ end
131
+
126
132
  @@parser = FormattingParser.new
127
133
 
128
134
  @@result = @@format = nil
@@ -132,7 +138,12 @@ module NginxTail
132
138
  raise @@parser.terminal_failures.join("\n")
133
139
  else
134
140
  def @@result.value(log_line, color)
135
- elements.map { |element| element.value(log_line, color) }.join
141
+ if @@output_format == :ansi
142
+ elements.map { |element| element.value(log_line, color) }.join
143
+ elsif @@output_format == :html
144
+ line = elements.map { |element| element.value(log_line, nil) }.join
145
+ "<span style=\"font-family: monospace; color: #{color}\">%s</span></br>" % line
146
+ end
136
147
  end
137
148
  end
138
149
  end
@@ -146,7 +157,7 @@ module NginxTail
146
157
 
147
158
  # a bit less boring:
148
159
  color = options[:color] && if redirect_status?
149
- :yellow
160
+ @@output_format == :ansi ? :yellow : :orange
150
161
  elsif !success_status?
151
162
  :red
152
163
  else
data/lib/ntail/options.rb CHANGED
@@ -39,6 +39,10 @@ module NginxTail
39
39
  options.raw = true
40
40
  end
41
41
 
42
+ opts.on '--browser', '--html', "generate HTML output (the default is ANSI output)" do |value|
43
+ options.output = :html
44
+ end
45
+
42
46
  opts.on '--apache', "Try to match lines using the Apache log format instead of nginx (the default)" do |value|
43
47
  options.pattern = :apache
44
48
  end
data/ntail.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{ntail}
8
- s.version = "0.1.0"
8
+ s.version = "0.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Peter Vandenberk"]
12
- s.date = %q{2011-08-09}
12
+ s.date = %q{2011-11-05}
13
13
  s.default_executable = %q{ntail}
14
14
  s.description = %q{A tail(1)-like utility for nginx log files. It supports parsing, filtering and formatting individual log lines.}
15
15
  s.email = %q{pvandenberk@mac.com}
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: ntail
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.0
5
+ version: 0.2.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - Peter Vandenberk
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-08-09 00:00:00 +01:00
13
+ date: 2011-11-05 00:00:00 +00:00
14
14
  default_executable: ntail
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -228,7 +228,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
228
228
  requirements:
229
229
  - - ">="
230
230
  - !ruby/object:Gem::Version
231
- hash: 3911562482535553206
231
+ hash: -717546591463707686
232
232
  segments:
233
233
  - 0
234
234
  version: "0"