rack-colorized_logger 1.0.1
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/lib/rack-colorized_logger.rb +67 -0
- metadata +63 -0
@@ -0,0 +1,67 @@
|
|
1
|
+
require 'term/ansicolor'
|
2
|
+
class ::String; include ::Term::ANSIColor; end
|
3
|
+
|
4
|
+
module Rack
|
5
|
+
class ColorizedLogger
|
6
|
+
|
7
|
+
DEFAULT_COLORS = {
|
8
|
+
:params => [:blue, :red],
|
9
|
+
:session => [:cyan, :yellow],
|
10
|
+
:cookies => [:green, :magenta]
|
11
|
+
}
|
12
|
+
|
13
|
+
DEFAULT_OUTPUT = ::STDOUT
|
14
|
+
|
15
|
+
attr_writer :public, :colors, :out
|
16
|
+
|
17
|
+
def initialize(app)
|
18
|
+
yield self if block_given?
|
19
|
+
@colors ||= (defined? Rack::ColorizedLogger::COLORS) ? Rack::ColorizedLogger::COLORS : DEFAULT_COLORS
|
20
|
+
@out ||= DEFAULT_OUTPUT
|
21
|
+
@app = app
|
22
|
+
@public_map = Dir[::File.join(@public, '**', '*')].map {|f| ::File.basename f} if @public and ::File.directory? @public
|
23
|
+
end
|
24
|
+
|
25
|
+
def call env
|
26
|
+
@request = Rack::Request.new(env)
|
27
|
+
selected_paths = (@public_map.nil? or @public_map.empty?) ? nil : @public_map.select {|p| @request.path.index("\/#{p}") == 0}
|
28
|
+
if selected_paths.nil? or selected_paths.empty?
|
29
|
+
@out.puts "path:".bold + " " + @request.path
|
30
|
+
@colors.each do |thing, color_a|
|
31
|
+
if thing.respond_to? :call
|
32
|
+
_thing = thing.call(@request)
|
33
|
+
@out.puts "#{_thing[0]}:".send(color_a[0]).bold
|
34
|
+
pretty_colors_h _thing[1], *color_a
|
35
|
+
else
|
36
|
+
@out.puts "#{thing.to_s}:".send(color_a[0]).bold
|
37
|
+
pretty_colors_h @request.send(thing), *color_a
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
@app.call env
|
42
|
+
end
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
def pretty_colors_h(hash, k_color, v_color = nil, padding = 1, start = true)
|
47
|
+
v_color ||= k_color
|
48
|
+
indent = padding + 1
|
49
|
+
@out.puts sprintf("%1$*2$s", "{", padding).blue if start
|
50
|
+
hash.each do |k,v|
|
51
|
+
if v.is_a?(Hash)
|
52
|
+
@out.puts sprintf("%1$*2$s","",indent) + "#{k.to_s.bold.send(k_color)} => " + "{".blue
|
53
|
+
pretty_colors_h(v, k_color, v_color, padding+2, false)
|
54
|
+
elsif v.is_a?(Array)
|
55
|
+
@out.puts sprintf("%1$*2$s","",indent) + "#{k.to_s.bold.send(k_color)} => " + pretty_colors_a(v, v_color)
|
56
|
+
else
|
57
|
+
@out.puts sprintf("%1$*2$s","",indent) + "#{k.to_s.bold.send(k_color)} => #{v.to_s.bold.send(v_color)}"
|
58
|
+
end
|
59
|
+
end
|
60
|
+
@out.puts sprintf("%1$*2$s", "}", padding).blue
|
61
|
+
end
|
62
|
+
|
63
|
+
def pretty_colors_a(array, color)
|
64
|
+
"[" + array.map {|e| e.is_a?(Hash) ? e.inspect.bold.send(color) : e.bold.send(color)}.join(",") + "]"
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
metadata
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rack-colorized_logger
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Kenichi Nakamura
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-05-25 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: term-ansicolor
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
description:
|
31
|
+
email:
|
32
|
+
- kenichi.nakamura@gmail.com
|
33
|
+
executables: []
|
34
|
+
extensions: []
|
35
|
+
extra_rdoc_files: []
|
36
|
+
files:
|
37
|
+
- lib/rack-colorized_logger.rb
|
38
|
+
homepage: https://github.com/kenichi/rack-colorized_logger
|
39
|
+
licenses: []
|
40
|
+
post_install_message:
|
41
|
+
rdoc_options: []
|
42
|
+
require_paths:
|
43
|
+
- lib
|
44
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
45
|
+
none: false
|
46
|
+
requirements:
|
47
|
+
- - ! '>='
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '0'
|
50
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
51
|
+
none: false
|
52
|
+
requirements:
|
53
|
+
- - ! '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: 1.4.2
|
56
|
+
requirements: []
|
57
|
+
rubyforge_project:
|
58
|
+
rubygems_version: 1.8.24
|
59
|
+
signing_key:
|
60
|
+
specification_version: 3
|
61
|
+
summary: simple logger that outputs params, session, and cookies in fancy colors.
|
62
|
+
test_files: []
|
63
|
+
has_rdoc:
|