cologger 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/README.md +47 -2
  2. data/lib/cologger.rb +48 -15
  3. metadata +1 -1
data/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
  ## Installation
5
5
  This utils is packed as a gem, so, simply run `gem install cologger` to install it.
6
6
 
7
- Current version is 0.1.2
7
+ Current version is 0.1.3
8
8
 
9
9
  ## Usage
10
10
  Using cologger is quite easy && straight forward.
@@ -49,10 +49,54 @@ Same as ruby `logger`, there are 5 levels. Namely,
49
49
 
50
50
  The levels are ordered desendingly according to thier level of importance.
51
51
 
52
+ ## Color schema
53
+ If you don't like our default color schema, which is `{ fatal: "red", error: "magenta", warn: "yellow", info: "green", debug: "cyan" }`, you can customize your own schema.
54
+
55
+ To do so, you can add the following code before start logging:
56
+
57
+ ```
58
+ new_color_hash = {
59
+ fatal: "green",
60
+ error: "NotAColor"
61
+ }
62
+ ```
63
+
64
+ After that, apply this schema to your logger like this:
65
+
66
+ ```
67
+ logger.update_colors new_color_hash
68
+ ```
69
+
70
+ Now, if you do logging, here's what you'll get:
71
+
72
+ ![change color schema](Screenshot_change_color.png)
73
+
74
+ Notice that, when encountered an unknown color, the logger will complain about it in `red` color, and ignore this item. The same is true for the key, which is log level.
75
+
76
+ ### Possible colors
77
+ Since Cologger is built upon the cute `colored` gem, the colors we support is listed below:
78
+
79
+ - black
80
+ - red
81
+ - green
82
+ - yellow
83
+ - blue
84
+ - magenta
85
+ - cyan
86
+ - white
87
+
88
+ ### Logging levels
89
+ In order to make your life easier, we choose to use simple word for the levels, the levels are listed below:
90
+
91
+ - fatal
92
+ - error
93
+ - warn
94
+ - info
95
+ - debug
96
+
52
97
  ## TODO
53
98
  - Support file as output dev
54
99
  - Customize log format
55
- - Customize log level color
56
100
 
57
101
 
58
102
  ## Dependency
@@ -62,6 +106,7 @@ This gem depends on the cute [`colored' gem](https://github.com/defunkt/colored)
62
106
  Thanks sir!
63
107
 
64
108
  ## Change log
109
+ - 0.1.3, you can use `update_colors` method to change the color schema
65
110
  - 0.1.2, remove `tag` according to [@zhf](https://github.com/zhf)'s advice. User can add tag to content by themself when needed.
66
111
  - 0.1.1, use `\t` to align timestamp.
67
112
  - 0.1.0, initial version.
data/lib/cologger.rb CHANGED
@@ -20,27 +20,34 @@ class Cologger
20
20
  # low-level information for developers
21
21
  LEVEL_DEBUG = 4
22
22
 
23
- # fatal in red
24
- COLOR_FATAL = 'red'
25
-
26
- # error in magenta
27
- COLOR_ERROR = 'magenta'
28
-
29
- # warn in yellow
30
- COLOR_WARN = 'yellow'
31
-
32
- # info in green
33
- COLOR_INFO = 'green'
34
-
35
- # debug in cyan
36
- COLOR_DEBUG = 'cyan'
37
-
38
23
  attr_accessor :log_level
39
24
 
25
+ # Set alias for const methods, to override the behavior
26
+ class << self
27
+ alias :old_const_get :const_get
28
+ alias :old_const_set :const_set
29
+ end
30
+
31
+ # public methods
40
32
  def initialize
41
33
  @log_level = LEVEL_DEBUG # default to log everything
42
34
  end
43
35
 
36
+ # Pass in a hash that contains the LEVEL to color hash
37
+ def update_colors color_hash
38
+ color_hash.each_pair do |sym, color|
39
+ if respond_to? sym.to_sym
40
+ if String::COLORS.has_key? color
41
+ Cologger.const_set((sym_for sym.to_sym, "COLOR"), color)
42
+ else
43
+ puts "Unknown color #{color} for #{sym}, ignord".red
44
+ end
45
+ else
46
+ puts "Unknown log level #{sym}, ignored".red
47
+ end
48
+ end
49
+ end
50
+
44
51
  def method_missing(method, *args, &block)
45
52
  if respond_to? method
46
53
  log(method, *args)
@@ -51,7 +58,33 @@ class Cologger
51
58
  Cologger.constants.include? sym_for(method, "LEVEL")
52
59
  end
53
60
 
61
+ def self.const_get const, inherit=true
62
+ if const =~ /COLOR_(.+)/
63
+ level = $1.downcase.to_sym
64
+ @@color_hash[level]
65
+ else
66
+ self.old_const_get const, inherit
67
+ end
68
+ end
69
+
70
+ def self.const_set const, value
71
+ if const =~ /COLOR_(.+)/
72
+ level = $1.downcase.to_sym
73
+ @@color_hash[level] = value
74
+ else
75
+ self.old_const_set const, value
76
+ end
77
+ end
78
+
54
79
  private
80
+ @@color_hash = {
81
+ fatal: "red",
82
+ error: "magenta",
83
+ warn: "yellow",
84
+ info: "green",
85
+ debug: "cyan"
86
+ }
87
+
55
88
  def sym_for method, prefix = nil
56
89
  str = "#{method.to_s.upcase}"
57
90
  str = "#{prefix}_#{str}" if prefix
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cologger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: