lager 1.1.0.1 → 1.1.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/README.md +95 -65
  2. data/VERSION +1 -1
  3. data/lib/lager.rb +1 -10
  4. metadata +1 -1
data/README.md CHANGED
@@ -4,66 +4,71 @@ Lager is a logging mixin. It is designed to add class methods for logging, via
4
4
 
5
5
  Usage
6
6
  -----
7
- require 'lager'
7
+ ```ruby
8
+ require 'lager'
8
9
 
9
- class Foo
10
- extend Lager
11
- log_to $stdout, :debug # sets up @lager at the class layer
12
- # ...
10
+ class Foo
11
+ extend Lager
12
+ log_to $stdout, :debug # sets up @lager at the class layer
13
+ # ...
14
+ ```
13
15
 
14
16
  Now, within Foo, you can use the class instance variable @lager for logging.
15
17
 
16
- # ...
17
- def self.bar(baz)
18
- unless baz.is_a?(String)
19
- @lager.debug { "baz #{baz} is a #{baz.class}, not a string" }
20
- end
21
- end
22
- # ...
18
+ ```ruby
19
+ # ...
20
+ def self.bar(baz)
21
+ unless baz.is_a?(String)
22
+ @lager.debug { "baz #{baz} is a #{baz.class}, not a string" }
23
+ end
24
+ end
25
+ # ...
26
+ ```
23
27
 
24
28
  What about instance methods, you ask? Well, you will need to assign @lager yourself, within #initialize.
25
29
 
26
- # ...
27
- def initialize
28
- # set the instance layer's @lager to the class layer's @lager
29
- @lager = self.class.lager
30
- # now both layers are using the same instance
31
- end
32
-
33
- def do_something_complicated
34
- @lager.debug { "about to do something complicated" }
35
- # ...
36
- @lager.debug { "whew! we made it!" }
37
- end
38
- end
30
+ ```ruby
31
+ # ...
32
+ def initialize
33
+ # set the instance layer's @lager to the class layer's @lager
34
+ @lager = self.class.lager
35
+ # now both layers are using the same instance
36
+ end
37
+
38
+ def do_something_complicated
39
+ @lager.debug { "about to do something complicated" }
40
+ # ...
41
+ @lager.debug { "whew! we made it!" }
42
+ end
43
+ end
44
+ ```
39
45
 
40
46
  Everything under control
41
47
  ------------------------
42
48
  Right now, Foo is spewing debug messages everywhere:
43
49
 
44
- Foo.bar(15)
45
- f = Foo.new
46
- f.do_something_complicated
47
-
48
- [2013-07-05 15:14:52] DEBUG: baz 15 is a Fixnum, not a string
49
- [2013-07-05 15:14:52] DEBUG: about to do something complicated
50
- [2013-07-05 15:14:52] DEBUG: whew! we made it!
50
+ ```ruby
51
+ Foo.bar(15)
52
+ f = Foo.new
53
+ f.do_something_complicated
51
54
 
55
+ [2013-07-05 15:14:52] DEBUG: baz 15 is a Fixnum, not a string
56
+ [2013-07-05 15:14:52] DEBUG: about to do something complicated
57
+ [2013-07-05 15:14:52] DEBUG: whew! we made it!
58
+ ```
52
59
 
53
- This is because we set the default logging to :debug level, above:
60
+ This is because we set the default logging to :debug level, above. Let's calm things down a bit, shall we?
54
61
 
55
- class Foo
56
- extend Lager
57
- log_to $stdout, :debug # sets up @lager at the class layer
58
-
59
- Let's calm things down a bit, shall we?
60
-
61
- Foo.log_level :warn
62
- Foo.new.do_something_complicated
62
+ ```ruby
63
+ Foo.log_level = :warn
64
+ Foo.new.do_something_complicated
65
+ ```
63
66
 
64
67
  We can tell Foo to log to a file:
65
68
 
66
- Foo.log_to '/tmp/foo.log'
69
+ ```ruby
70
+ Foo.log_to '/tmp/foo.log'
71
+ ```
67
72
 
68
73
  Note that this will replace the class's Logger instance. The old log level will be maintained unless you specify a new one.
69
74
 
@@ -76,14 +81,16 @@ Best practices
76
81
 
77
82
  For Logger, generally: use block invocation of message methods.
78
83
 
79
- @lager.debug { "hi" }
80
- # rather than
81
- @lager.debug "hi"
84
+ ```ruby
85
+ @lager.debug { "hi" }
86
+ # rather than
87
+ @lager.debug "hi"
82
88
 
83
- # By using the first form, the block will not be evaluated unless we
84
- # are logging at DEBUG level.
85
- # If using the second form, the message is evaluated no matter the current
86
- # log level. This can be significant when logging complicated messages.
89
+ # By using the first form, the block will not be evaluated unless we
90
+ # are logging at DEBUG level.
91
+ # If using the second form, the message is evaluated no matter the current
92
+ # log level. This can be significant when logging complicated messages.
93
+ ```
87
94
 
88
95
  Artifacts
89
96
  ---------
@@ -91,32 +98,55 @@ Artifacts
91
98
  * lager
92
99
  * log_to
93
100
  * log_level
94
- * By calling log_to, you introduce the class instance variable @lager
95
- * By assigning @lager within initialize, you introduce the instance variable @lager
101
+ * log_level=
102
+ * By calling log_to, you introduce the *class instance variable* @lager
103
+ * By assigning @lager within initialize, you introduce the *instance variable* @lager
96
104
 
97
105
  Now you have a unified interface for logging at both class and instance layers.
98
106
 
99
- @lager.info { "So happy right now!" }
107
+ ```ruby
108
+ @lager.info { "So happy right now!" }
109
+ ```
100
110
 
101
111
  Use an existing Logger instance
102
112
  -------------------------------
103
113
  If your project already has an existing Logger, then you can set your class to use that Logger:
104
114
 
105
- class Foo
106
- extend Lager
107
- log_to $LOG # the global Logger instance
108
- # ...
109
- end
115
+ ```ruby
116
+ class Foo
117
+ extend Lager
118
+ log_to $LOG # the global Logger instance
119
+ # ...
120
+ end
121
+ ```
110
122
 
111
123
  Of course, $LOG will have to have already been defined at requiretime. You can set it the same way at runtime:
112
124
 
113
- class Foo
114
- extend Lager
115
- log_to $stderr
116
- # ...
117
- end
125
+ ```ruby
126
+ class Foo
127
+ extend Lager
128
+ log_to $stderr
129
+ # ...
130
+ end
131
+
132
+ # now, in an irb session or another file
133
+ # where Project.log is your project's Logger:
134
+
135
+ Foo.log_to Project.log
136
+ ```
137
+
138
+ Inheritance
139
+ -----------
140
+ ```ruby
141
+ class Foo
142
+ extend Lager
143
+ end
144
+
145
+ class Bar < Foo
146
+ end
118
147
 
119
- # now, in an irb session or another file
120
- # where Project.log is your project's Logger:
148
+ # Bar will have Lager mixed in. Its @lager is independent of Foo's.
149
+ # You can set Bar's to Foo's
121
150
 
122
- Foo.log_to Project.log
151
+ Bar.log_to Foo.lager
152
+ ```
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.0.1
1
+ 1.1.2.1
data/lib/lager.rb CHANGED
@@ -15,9 +15,6 @@ require 'logger'
15
15
  # @lager.debug { "example log message" }
16
16
  # end
17
17
  #
18
- # Note that using the block invocation means that the block contents are
19
- # not evaluated if the log level is above the message level.
20
- #
21
18
  # Make sure to call log_to within the class definition, so that class methods
22
19
  # will already have @lager defined at requiretime.
23
20
  #
@@ -30,12 +27,6 @@ require 'logger'
30
27
  # @lager = self.class.lager
31
28
  # end
32
29
  #
33
- # Outside of initialize or a call to log_to within the class definition,
34
- # you should only ever call the message methods: debug, info, warn, error,
35
- # and fatal within your class code.
36
- #
37
- # Let the destination and log level be managed from outside.
38
- #
39
30
  module Lager
40
31
  def self.version
41
32
  file = File.expand_path('../../VERSION', __FILE__)
@@ -59,7 +50,7 @@ module Lager
59
50
  line << "(#{progname})" if progname
60
51
  line << " #{msg}\n"
61
52
  }
62
- log_level = level
53
+ self.log_level = level
63
54
  dest # don't expose @lager here
64
55
  end
65
56
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lager
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0.1
4
+ version: 1.1.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: