fancy_logger 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -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
@@ -0,0 +1,3 @@
1
+ require 'fancy_logger'
2
+
3
+ Bundler.require(:default, :development)
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: