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 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: