fancy_logger 0.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/Gemfile.lock +36 -0
- data/VERSION +1 -0
- data/lib/fancy_logger.rb +105 -0
- data/spec/fancy_logger_spec.rb +14 -0
- data/spec/spec_helper.rb +3 -0
- metadata +97 -0
data/Gemfile.lock
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
fancy_logger (0.0.1)
|
5
|
+
outline (~> 0.1.5)
|
6
|
+
rainbow (~> 1.1.3)
|
7
|
+
|
8
|
+
GEM
|
9
|
+
remote: http://rubygems.org/
|
10
|
+
specs:
|
11
|
+
active_support (3.0.0)
|
12
|
+
activesupport (= 3.0.0)
|
13
|
+
activesupport (3.0.0)
|
14
|
+
at (0.1.2)
|
15
|
+
active_support (~> 3.0.0)
|
16
|
+
diff-lcs (1.1.3)
|
17
|
+
meta_tools (0.2.6)
|
18
|
+
outline (0.1.5)
|
19
|
+
meta_tools (~> 0.2.6)
|
20
|
+
rainbow (1.1.3)
|
21
|
+
rspec (2.6.0)
|
22
|
+
rspec-core (~> 2.6.0)
|
23
|
+
rspec-expectations (~> 2.6.0)
|
24
|
+
rspec-mocks (~> 2.6.0)
|
25
|
+
rspec-core (2.6.4)
|
26
|
+
rspec-expectations (2.6.0)
|
27
|
+
diff-lcs (~> 1.1.2)
|
28
|
+
rspec-mocks (2.6.0)
|
29
|
+
|
30
|
+
PLATFORMS
|
31
|
+
ruby
|
32
|
+
|
33
|
+
DEPENDENCIES
|
34
|
+
at (~> 0.1.2)
|
35
|
+
fancy_logger!
|
36
|
+
rspec (~> 2.6.0)
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.0.1
|
data/lib/fancy_logger.rb
ADDED
@@ -0,0 +1,105 @@
|
|
1
|
+
require 'bundler/setup'
|
2
|
+
require 'logger'
|
3
|
+
require 'outline'
|
4
|
+
require 'rainbow'
|
5
|
+
|
6
|
+
class FancyLogger < Logger
|
7
|
+
def self.default_config
|
8
|
+
@default_config ||= Outline.new do
|
9
|
+
timestamp_format "%F %r"
|
10
|
+
show_help_message true
|
11
|
+
|
12
|
+
styles do
|
13
|
+
debug do
|
14
|
+
foreground :black
|
15
|
+
background :cyan
|
16
|
+
end
|
17
|
+
|
18
|
+
info do
|
19
|
+
foreground :default
|
20
|
+
background :default
|
21
|
+
end
|
22
|
+
|
23
|
+
warn do
|
24
|
+
foreground :yellow
|
25
|
+
background :default
|
26
|
+
blink true
|
27
|
+
end
|
28
|
+
|
29
|
+
error do
|
30
|
+
foreground :red
|
31
|
+
background :default
|
32
|
+
end
|
33
|
+
|
34
|
+
fatal do
|
35
|
+
foreground :black
|
36
|
+
background :red
|
37
|
+
bold true
|
38
|
+
underline true
|
39
|
+
end
|
40
|
+
|
41
|
+
unknown do
|
42
|
+
foreground :black
|
43
|
+
background :white
|
44
|
+
underline true
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
attr_writer :enabled
|
51
|
+
|
52
|
+
def config(&blk)
|
53
|
+
@config ||= self.class.default_config
|
54
|
+
@config = Outline.new(data: self.class.default_config, &blk) if block_given?
|
55
|
+
|
56
|
+
@config
|
57
|
+
end
|
58
|
+
|
59
|
+
def help_message
|
60
|
+
message = "Log Styles:\n"
|
61
|
+
|
62
|
+
config.styles.to_h.keys.each do |severity|
|
63
|
+
message += " #{styled_string(severity, severity)}\n"
|
64
|
+
end
|
65
|
+
|
66
|
+
message += "\n\n"
|
67
|
+
end
|
68
|
+
|
69
|
+
def format_message(severity, timestamp, progname, msg)
|
70
|
+
@the_help_message_has_been_displayed_before ||= false
|
71
|
+
@enabled ||= true
|
72
|
+
|
73
|
+
if @enabled
|
74
|
+
message = ""
|
75
|
+
|
76
|
+
if @the_help_message_has_been_displayed_before == false && config.show_help_message == true
|
77
|
+
@the_help_message_has_been_displayed_before = true
|
78
|
+
message += help_message
|
79
|
+
end
|
80
|
+
timestamp = styled_timestamp(severity, timestamp)
|
81
|
+
|
82
|
+
message += "[#{timestamp}] #{msg}\n"
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
protected
|
87
|
+
|
88
|
+
def styled_string(severity, string)
|
89
|
+
style = config.styles.send(severity.to_s.downcase.to_sym)
|
90
|
+
string = string.to_s
|
91
|
+
|
92
|
+
style.to_h.each do |key, value|
|
93
|
+
key = :bright if key == :bold
|
94
|
+
string = value == true ? string.send(key) : string.send(key, value)
|
95
|
+
end
|
96
|
+
|
97
|
+
string
|
98
|
+
end
|
99
|
+
|
100
|
+
def styled_timestamp(severity, timestamp)
|
101
|
+
timestamp = timestamp.strftime(config.timestamp_format)
|
102
|
+
|
103
|
+
styled_string(severity, timestamp)
|
104
|
+
end
|
105
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'stringio'
|
3
|
+
|
4
|
+
describe FancyLogger do
|
5
|
+
describe "The output of the logger" do
|
6
|
+
let(:output) { StringIO.new }
|
7
|
+
let(:logger) { FancyLogger.new(output) }
|
8
|
+
|
9
|
+
it "should return a styled message based on the configuration" do
|
10
|
+
logger.at.the_help_message_has_been_displayed_before = true
|
11
|
+
# output.string.should =~ /\[\e\[30m\e\[43m\e\[5m/
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,97 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: fancy_logger
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Ryan Scott Lewis
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-01-26 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rainbow
|
16
|
+
requirement: &70294615617280 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 1.1.3
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70294615617280
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: outline
|
27
|
+
requirement: &70294615616800 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ~>
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 0.1.5
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70294615616800
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rspec
|
38
|
+
requirement: &70294615616340 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ~>
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 2.6.0
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70294615616340
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: at
|
49
|
+
requirement: &70294615615880 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.1.2
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70294615615880
|
58
|
+
description: An easily customizable logger with style.
|
59
|
+
email: c00lryguy@gmail.com
|
60
|
+
executables: []
|
61
|
+
extensions: []
|
62
|
+
extra_rdoc_files:
|
63
|
+
- VERSION
|
64
|
+
files:
|
65
|
+
- VERSION
|
66
|
+
- Gemfile.lock
|
67
|
+
- lib/fancy_logger.rb
|
68
|
+
- spec/fancy_logger_spec.rb
|
69
|
+
- spec/spec_helper.rb
|
70
|
+
homepage: http://github.com/c00lryguy/fancy_logger
|
71
|
+
licenses: []
|
72
|
+
post_install_message:
|
73
|
+
rdoc_options: []
|
74
|
+
require_paths:
|
75
|
+
- lib
|
76
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
77
|
+
none: false
|
78
|
+
requirements:
|
79
|
+
- - ! '>='
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '0'
|
82
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
requirements: []
|
89
|
+
rubyforge_project:
|
90
|
+
rubygems_version: 1.8.10
|
91
|
+
signing_key:
|
92
|
+
specification_version: 3
|
93
|
+
summary: Simplify your logging.
|
94
|
+
test_files:
|
95
|
+
- spec/fancy_logger_spec.rb
|
96
|
+
- spec/spec_helper.rb
|
97
|
+
has_rdoc:
|