class_logger 0.2 → 1.0
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/.gitignore +1 -0
- data/README.md +22 -25
- data/examples/examples.rb +42 -0
- data/lib/class_logger.rb +14 -6
- data/lib/class_logger/version.rb +1 -1
- metadata +3 -2
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -26,10 +26,13 @@ ClassLogger supports a bunch of options that are passed straight to the Logger.
|
|
26
26
|
<dd>Set this to how many logfiles you want to keep after rotating (or set +rotate+ above)</dd>
|
27
27
|
|
28
28
|
<dt><strong>:path</strong></dt>
|
29
|
-
<dd>The path to your log folder. (Default: "
|
29
|
+
<dd>The path to your log folder. (Default: "%{rails_root}/log") -- see Interpolations section</dd>
|
30
|
+
|
31
|
+
<dt><strong>:file</strong></dt>
|
32
|
+
<dd>This is the name of your logfile. (Use: "%{class_name}" to interpolate the class's name) (Default: "%{class_name}.log") -- see Interpolations section</dd>
|
30
33
|
|
31
34
|
<dt><strong>:in</strong></dt>
|
32
|
-
<dd>
|
35
|
+
<dd><strong>Overrides :file & :path!</strong> If you include this setting, it will break the filename from the path and use those options.</dd>
|
33
36
|
|
34
37
|
<dt><strong>:as</strong></dt>
|
35
38
|
<dd>This is the method your logger will be available to the class as. (Default: logger)</dd>
|
@@ -47,11 +50,14 @@ Interpolations
|
|
47
50
|
The following can be used in the *path* or *in* options.
|
48
51
|
|
49
52
|
<dl>
|
50
|
-
<dt><strong
|
53
|
+
<dt><strong>%{rails_root}</strong></dt>
|
51
54
|
<dd>Will replace itself with Rails.root when in a rails app</dd>
|
52
55
|
|
53
|
-
<dt><strong
|
56
|
+
<dt><strong>%{class_name}</strong></dt>
|
54
57
|
<dd>Will replace itself with the name of the class.</dd>
|
58
|
+
|
59
|
+
<dt><strong>%{caller_path_}</strong></dt>
|
60
|
+
<dd>Will replace itself the path of the calling file. (Useful if you want logs relative to your scripts location)</dd>
|
55
61
|
</dl>
|
56
62
|
|
57
63
|
Example Usage
|
@@ -64,7 +70,7 @@ Example Usage
|
|
64
70
|
has_logger
|
65
71
|
|
66
72
|
def process!
|
67
|
-
logger.info "Creating transation: #{amount}" # => goes to log/transaction.log
|
73
|
+
logger.info "Creating transation: #{amount}" # => goes to RAILS_ROOT/log/transaction.log
|
68
74
|
end
|
69
75
|
end
|
70
76
|
|
@@ -73,41 +79,32 @@ Example Usage
|
|
73
79
|
# specifying a custom logfile and logger name
|
74
80
|
class Transaction < ActiveRecord::Base
|
75
81
|
include ClassLogger
|
76
|
-
has_logger :
|
82
|
+
has_logger :file => 'gateway.log', :as => :gateway_logger
|
77
83
|
|
78
84
|
def process!
|
79
|
-
gateway_logger.info "Creating transation: #{amount}" # => goes to log/gateway.log
|
80
|
-
logger.info "Hello default logger!" # => goes to
|
85
|
+
gateway_logger.info "Creating transation: #{amount}" # => goes to RAILS_ROOT/log/gateway.log
|
86
|
+
logger.info "Hello default logger!" # => goes to default rails logger
|
81
87
|
end
|
82
88
|
end
|
83
89
|
|
84
90
|
# overriding active record's default logger with a custom logfile
|
85
91
|
class Transaction < ActiveRecord::Base
|
86
92
|
include ClassLogger
|
87
|
-
has_logger :
|
93
|
+
has_logger :file => 'gateway.log'
|
88
94
|
|
89
95
|
def process!
|
90
|
-
logger.info "Creating transation: #{amount}" # => goes to log/gateway.log
|
96
|
+
logger.info "Creating transation: #{amount}" # => goes to RAILS_ROOT/log/gateway.log
|
91
97
|
end
|
92
98
|
end
|
93
99
|
|
94
100
|
# create a logger for a module
|
95
101
|
module Something
|
96
102
|
include ClassLogger
|
97
|
-
has_logger :
|
98
|
-
has_logger :
|
99
|
-
|
100
|
-
# has_logger only makes instance methods, so we need to wrap it up
|
101
|
-
def self.logger
|
102
|
-
self.loggers[:logger]
|
103
|
-
end
|
104
|
-
|
105
|
-
def self.utoh
|
106
|
-
self.loggers[:utoh_logger]
|
107
|
-
end
|
103
|
+
has_logger :in => "%{caller_path}/log/my_module.log"
|
104
|
+
has_logger :in => "/var/log/utoh.log", :as => :utoh_logger
|
108
105
|
end
|
109
|
-
Something.logger.info "Testing 123"
|
110
|
-
Something.
|
106
|
+
Something.logger.info "Testing 123" # => goes to ./log/my_module.log
|
107
|
+
Something.utoh_logger.error "oops!" # => goes to /var/log/utoh.log
|
111
108
|
|
112
109
|
# inside a class with a custom formatter
|
113
110
|
class Something
|
@@ -116,9 +113,9 @@ Example Usage
|
|
116
113
|
:formatter => proc{ |severity, time, program_name, message| "[%s](Something): %s\n" % [severity, message] }
|
117
114
|
|
118
115
|
def initialize
|
119
|
-
logger.debug "Created Something."
|
116
|
+
logger.debug "Created Something." # => goes to ../log/something.log
|
120
117
|
end
|
121
118
|
end
|
122
119
|
Something.new
|
123
|
-
Something.loggers[:logger].debug "System logger"
|
120
|
+
Something.loggers[:logger].debug "System logger" # alter entry point to logger
|
124
121
|
</pre>
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require File.expand_path('../../lib/class_logger', __FILE__)
|
2
|
+
$log_path = File.dirname(__FILE__)
|
3
|
+
|
4
|
+
# test module functionality
|
5
|
+
module Hello
|
6
|
+
include ClassLogger
|
7
|
+
has_logger :in => "%{class_name}.log", :as => :my_logger
|
8
|
+
|
9
|
+
def self.alternate
|
10
|
+
loggers[:my_logger]
|
11
|
+
end
|
12
|
+
end
|
13
|
+
Hello.my_logger.info "Hai"
|
14
|
+
Hello.alternate.info "Hai der!"
|
15
|
+
|
16
|
+
# test class functionality
|
17
|
+
class Gateway
|
18
|
+
include ClassLogger
|
19
|
+
has_logger :path => $log_path, :level => Logger::ERROR
|
20
|
+
has_logger :in => "%{caller_path}/transaction.log", :as => :transaction_logger,
|
21
|
+
:formatter => proc{ |severity, time, program_name, message| "[%s-Transaction]: %s\n" % [severity, message] }
|
22
|
+
|
23
|
+
def initialize
|
24
|
+
logger.info "Wont show up"
|
25
|
+
logger.error "Will show up"
|
26
|
+
end
|
27
|
+
|
28
|
+
def transact!
|
29
|
+
transaction_logger.info "Transacted"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
g = Gateway.new
|
34
|
+
g.transact!
|
35
|
+
|
36
|
+
# test default functionality
|
37
|
+
class Default
|
38
|
+
include ClassLogger
|
39
|
+
has_logger :path => "%{caller_path}"
|
40
|
+
end
|
41
|
+
|
42
|
+
Default.new.logger.info "Testing"
|
data/lib/class_logger.rb
CHANGED
@@ -12,8 +12,9 @@ module ClassLogger
|
|
12
12
|
:rotate => nil,
|
13
13
|
:max_size => nil,
|
14
14
|
:keep => nil,
|
15
|
-
:
|
16
|
-
:
|
15
|
+
:in => nil,
|
16
|
+
:path => "%{rails_root}/log",
|
17
|
+
:file => "%{class_name}.log",
|
17
18
|
:as => :logger,
|
18
19
|
:formatter => proc{ |severity, time, program_name, message| "[%s,%s]: %s\n" % [severity, time, message] },
|
19
20
|
:level => ::Logger::DEBUG
|
@@ -30,10 +31,16 @@ module ClassLogger
|
|
30
31
|
def setup_logger(options)
|
31
32
|
interpolations = {
|
32
33
|
:rails_root => (defined?(Rails) ? Rails.root : ''),
|
33
|
-
:class_name => self.to_s.downcase
|
34
|
+
:class_name => self.to_s.downcase,
|
35
|
+
:caller_path => (File.dirname(caller[1]) rescue '.')
|
34
36
|
}
|
35
|
-
|
36
|
-
|
37
|
+
|
38
|
+
if i = options[:in]
|
39
|
+
options[:file] = File.basename(i)
|
40
|
+
options[:path] = File.dirname(i)
|
41
|
+
end
|
42
|
+
|
43
|
+
file_path = File.join(options[:path], options[:file]).to_s % interpolations
|
37
44
|
if (rotate = options[:rotate])
|
38
45
|
_logger = ::Logger.new(file_path, rotate)
|
39
46
|
else
|
@@ -44,8 +51,9 @@ module ClassLogger
|
|
44
51
|
|
45
52
|
as = options[:as]
|
46
53
|
self.loggers[as] = _logger
|
54
|
+
|
47
55
|
define_method(as){ self.class.loggers[as] }
|
48
|
-
|
56
|
+
(class << self; self; end).class_eval{ define_method(as){ loggers[as] }}
|
49
57
|
end
|
50
58
|
end
|
51
59
|
end
|
data/lib/class_logger/version.rb
CHANGED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: class_logger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: "0
|
5
|
+
version: "1.0"
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Rob Hurring
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-03-
|
13
|
+
date: 2011-03-10 00:00:00 -05:00
|
14
14
|
default_executable:
|
15
15
|
dependencies: []
|
16
16
|
|
@@ -29,6 +29,7 @@ files:
|
|
29
29
|
- README.md
|
30
30
|
- Rakefile
|
31
31
|
- class_logger.gemspec
|
32
|
+
- examples/examples.rb
|
32
33
|
- lib/class_logger.rb
|
33
34
|
- lib/class_logger/version.rb
|
34
35
|
has_rdoc: true
|