reasonable_log4r 0.9.0 → 1.0.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.
Files changed (47) hide show
  1. data/.gitignore +7 -1
  2. data/.rspec +1 -0
  3. data/Gemfile +1 -2
  4. data/Gemfile.lock +95 -1
  5. data/lib/reasonable_log4r.rb +2 -0
  6. data/lib/reasonable_log4r/monkey_patch_log4r.rb +0 -121
  7. data/lib/reasonable_log4r/monkey_patch_logger_factory.rb +55 -0
  8. data/lib/reasonable_log4r/monkey_patch_yaml_configurator.rb +68 -0
  9. data/lib/reasonable_log4r/version.rb +1 -1
  10. data/reasonable_log4r.gemspec +4 -1
  11. data/spec/dummy/.rspec +1 -0
  12. data/spec/dummy/README +1 -0
  13. data/spec/dummy/Rakefile +7 -0
  14. data/spec/dummy/app/assets/javascripts/application.js +15 -0
  15. data/spec/dummy/app/assets/stylesheets/application.css +13 -0
  16. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  17. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  18. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  19. data/spec/dummy/config.ru +4 -0
  20. data/spec/dummy/config/application.rb +65 -0
  21. data/spec/dummy/config/boot.rb +10 -0
  22. data/spec/dummy/config/database-sample.yml +32 -0
  23. data/spec/dummy/config/environment.rb +5 -0
  24. data/spec/dummy/config/environments/development.rb +37 -0
  25. data/spec/dummy/config/environments/production.rb +67 -0
  26. data/spec/dummy/config/environments/test.rb +37 -0
  27. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  28. data/spec/dummy/config/initializers/inflections.rb +15 -0
  29. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  30. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  31. data/spec/dummy/config/initializers/session_store.rb +8 -0
  32. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  33. data/spec/dummy/config/locales/en.yml +5 -0
  34. data/spec/dummy/config/routes.rb +58 -0
  35. data/spec/dummy/public/404.html +26 -0
  36. data/spec/dummy/public/422.html +26 -0
  37. data/spec/dummy/public/500.html +25 -0
  38. data/spec/dummy/public/favicon.ico +0 -0
  39. data/spec/dummy/script/rails +6 -0
  40. data/spec/dummy/spec/spec_helper.rb +38 -0
  41. data/spec/monkey_patch_log4r_spec.rb +151 -0
  42. data/spec/monkey_patch_logger_factory_spec.rb +66 -0
  43. data/spec/monkey_patch_yaml_configurator_spec.rb +129 -0
  44. data/spec/spec_helper.rb +33 -0
  45. metadata +122 -5
  46. data/init.rb +0 -1
  47. data/lib/tasks/desirable_tasks.rake +0 -4
data/.gitignore CHANGED
@@ -15,4 +15,10 @@
15
15
  /tmp
16
16
  .idea/*
17
17
  database.yml
18
- /log/*.pid
18
+ /log/*.pid
19
+ spec/dummy/db/*.sqlite3
20
+ spec/dummy/log/*.log
21
+ spec/dummy/tmp/
22
+ spec/dummy/.sass-cache
23
+ spec/dummy/config/database.yml
24
+ spec/dummy/db/schema.rb
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/Gemfile CHANGED
@@ -5,8 +5,6 @@ source "http://rubygems.org"
5
5
  # development dependencies will be added by default to the :development group.
6
6
  gemspec
7
7
 
8
- gem 'log4r', '1.1.10'
9
-
10
8
  # Declare any dependencies that are still in development here instead of in
11
9
  # your gemspec. These might include edge Rails or gems from your path or
12
10
  # Git. Remember to move these dependencies to your gemspec before releasing
@@ -14,3 +12,4 @@ gem 'log4r', '1.1.10'
14
12
 
15
13
  # To use debugger
16
14
  # gem 'ruby-debug'
15
+ gem 'log4r', '1.1.10'
data/Gemfile.lock CHANGED
@@ -1,13 +1,107 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- reasonable_log4r (0.9.0)
4
+ reasonable_log4r (1.0.0)
5
5
  log4r (= 1.1.10)
6
+ pg
7
+ rails (>= 3.0.0)
8
+ rspec-rails
6
9
 
7
10
  GEM
8
11
  remote: http://rubygems.org/
9
12
  specs:
13
+ actionmailer (3.2.8)
14
+ actionpack (= 3.2.8)
15
+ mail (~> 2.4.4)
16
+ actionpack (3.2.8)
17
+ activemodel (= 3.2.8)
18
+ activesupport (= 3.2.8)
19
+ builder (~> 3.0.0)
20
+ erubis (~> 2.7.0)
21
+ journey (~> 1.0.4)
22
+ rack (~> 1.4.0)
23
+ rack-cache (~> 1.2)
24
+ rack-test (~> 0.6.1)
25
+ sprockets (~> 2.1.3)
26
+ activemodel (3.2.8)
27
+ activesupport (= 3.2.8)
28
+ builder (~> 3.0.0)
29
+ activerecord (3.2.8)
30
+ activemodel (= 3.2.8)
31
+ activesupport (= 3.2.8)
32
+ arel (~> 3.0.2)
33
+ tzinfo (~> 0.3.29)
34
+ activeresource (3.2.8)
35
+ activemodel (= 3.2.8)
36
+ activesupport (= 3.2.8)
37
+ activesupport (3.2.8)
38
+ i18n (~> 0.6)
39
+ multi_json (~> 1.0)
40
+ arel (3.0.2)
41
+ builder (3.0.3)
42
+ diff-lcs (1.1.3)
43
+ erubis (2.7.0)
44
+ hike (1.2.1)
45
+ i18n (0.6.1)
46
+ journey (1.0.4)
47
+ json (1.7.5)
10
48
  log4r (1.1.10)
49
+ mail (2.4.4)
50
+ i18n (>= 0.4.0)
51
+ mime-types (~> 1.16)
52
+ treetop (~> 1.4.8)
53
+ mime-types (1.19)
54
+ multi_json (1.3.6)
55
+ pg (0.14.1)
56
+ polyglot (0.3.3)
57
+ rack (1.4.1)
58
+ rack-cache (1.2)
59
+ rack (>= 0.4)
60
+ rack-ssl (1.3.2)
61
+ rack
62
+ rack-test (0.6.1)
63
+ rack (>= 1.0)
64
+ rails (3.2.8)
65
+ actionmailer (= 3.2.8)
66
+ actionpack (= 3.2.8)
67
+ activerecord (= 3.2.8)
68
+ activeresource (= 3.2.8)
69
+ activesupport (= 3.2.8)
70
+ bundler (~> 1.0)
71
+ railties (= 3.2.8)
72
+ railties (3.2.8)
73
+ actionpack (= 3.2.8)
74
+ activesupport (= 3.2.8)
75
+ rack-ssl (~> 1.3.2)
76
+ rake (>= 0.8.7)
77
+ rdoc (~> 3.4)
78
+ thor (>= 0.14.6, < 2.0)
79
+ rake (0.9.2.2)
80
+ rdoc (3.12)
81
+ json (~> 1.4)
82
+ rspec (2.11.0)
83
+ rspec-core (~> 2.11.0)
84
+ rspec-expectations (~> 2.11.0)
85
+ rspec-mocks (~> 2.11.0)
86
+ rspec-core (2.11.1)
87
+ rspec-expectations (2.11.3)
88
+ diff-lcs (~> 1.1.3)
89
+ rspec-mocks (2.11.3)
90
+ rspec-rails (2.11.0)
91
+ actionpack (>= 3.0)
92
+ activesupport (>= 3.0)
93
+ railties (>= 3.0)
94
+ rspec (~> 2.11.0)
95
+ sprockets (2.1.3)
96
+ hike (~> 1.2)
97
+ rack (~> 1.0)
98
+ tilt (~> 1.1, != 1.3.0)
99
+ thor (0.16.0)
100
+ tilt (1.3.3)
101
+ treetop (1.4.10)
102
+ polyglot
103
+ polyglot (>= 0.3.1)
104
+ tzinfo (0.3.33)
11
105
 
12
106
  PLATFORMS
13
107
  ruby
@@ -1,2 +1,4 @@
1
1
  require 'reasonable_log4r/monkey_patch_log4r'
2
+ require 'reasonable_log4r/monkey_patch_logger_factory'
3
+ require 'reasonable_log4r/monkey_patch_yaml_configurator'
2
4
  require 'reasonable_log4r/version'
@@ -64,125 +64,4 @@ module Log4r
64
64
  # Does nothing
65
65
  def remove(*foo); end
66
66
  end
67
-
68
- class Logger
69
- # Returns the root logger. Identical to Logger.global
70
- def self.root; return RootLogger.instance end
71
- # Returns the root logger. Identical to Logger.root
72
- def self.global; return GlobalLogger.instance end
73
-
74
- # Get a logger with a fullname from the repository or nil if logger
75
- # wasn't found.
76
-
77
- def self.[](_fullname)
78
- # forces creation of RootLogger if it doesn't exist yet.
79
- if _fullname=='root'
80
- return RootLogger.instance
81
- end
82
- if _fullname=='global'
83
- return GlobalLogger.instance
84
- end
85
- Repository[_fullname]
86
- end
87
-
88
- class LoggerFactory #:nodoc:
89
- # we want to log iff root.lev <= lev && logger.lev <= lev
90
- # BTW, root is guaranteed to be defined by this point
91
- def self.define_methods(logger)
92
- undefine_methods(logger)
93
- globlev = Log4r::Logger['global'].level
94
- return if logger.level == OFF or globlev == OFF
95
- toggle_methods(globlev, logger)
96
- end
97
-
98
- # Logger logging methods are defined here.
99
- def self.set_log(logger, lname)
100
- # invoke caller iff the logger invoked is tracing
101
- tracercall = (logger.trace ? "caller" : "nil")
102
- # maybe pass parent a logevent. second arg is the switch
103
- if logger.additive && !logger.is_root?
104
- parentcall = "@parent.#{lname.downcase}(event, true)"
105
- end
106
- mstr = %-
107
- def logger.#{lname.downcase}(data=nil, propagated=false)
108
- if propagated then event = data
109
- else
110
- data = yield if block_given?
111
- event = LogEvent.new(#{lname}, self, #{tracercall}, data)
112
- end
113
- @outputters.each {|o| o.#{lname.downcase}(event) }
114
- #{parentcall}
115
- end
116
- -
117
- module_eval mstr
118
- end
119
- end
120
- end
121
-
122
- class YamlConfigurator
123
- # Given a filename, loads the YAML configuration for Log4r.
124
- def self.load_yaml_files(filenames, yaml_sections = ['log4r_config'])
125
- cfgs = []
126
- yaml_sections.each do |yaml_section|
127
- filenames.each do |filename|
128
- log4r_config = nil
129
- docs = File.open(filename)
130
- begin
131
- YAML.load_documents(docs) do |doc|
132
- doc.has_key?(yaml_section) and log4r_config = doc[yaml_section] and break
133
- end
134
- rescue Exception => e
135
- raise "YAML error, file: #{filename}, error=#{e.message}"
136
- end
137
- if log4r_config
138
- cfgs << log4r_config
139
- end
140
- end
141
- end
142
-
143
- cfgs.each do |cfg|
144
- decode_pre_config(cfg['pre_config']) unless cfg['pre_config'].nil?
145
- end
146
-
147
- cfgs.each do |cfg|
148
- cfg['outputters'].each{ |op| decode_outputter(op)} unless cfg['outputters'].nil?
149
- end
150
-
151
- cfgs.each do |cfg|
152
- cfg['loggers'].each{ |lo| decode_logger(lo)} unless cfg['loggers'].nil?
153
- end
154
-
155
- cfgs.each do |cfg|
156
- cfg['logserver'].each{ |lo| decode_logserver(lo)} unless cfg['logserver'].nil?
157
- end
158
- end
159
-
160
- def self.decode_pre_config(pre)
161
- return Logger.root if pre.nil?
162
- decode_custom_levels( pre['custom_levels'])
163
- global_config( pre['global'])
164
- root_config( pre['root'])
165
- decode_parameters( pre['parameters'])
166
- end
167
-
168
- def self.root_config(e)
169
- return if e.nil?
170
- globlev = e['level']
171
- return if globlev.nil?
172
- lev = LNAMES.index(globlev) # find value in LNAMES
173
- Log4rTools.validate_level(lev, 4) # choke on bad level
174
- Logger.root.level = lev
175
- end
176
-
177
- def self.decode_logger(lo)
178
- if lo['name'] == 'root'
179
- l = Logger.root
180
- elsif lo['name'] == 'global'
181
- l = Logger.global
182
- else
183
- l = Logger.new lo['name']
184
- end
185
- decode_logger_common(l, lo)
186
- end
187
- end
188
67
  end
@@ -0,0 +1,55 @@
1
+ module Log4r
2
+ class Logger
3
+ # Returns the root logger. Identical to Logger.global
4
+ def self.root; return RootLogger.instance end
5
+ # Returns the root logger. Identical to Logger.root
6
+ def self.global; return GlobalLogger.instance end
7
+
8
+ # Get a logger with a fullname from the repository or nil if logger
9
+ # wasn't found.
10
+
11
+ def self.[](_fullname)
12
+ # forces creation of RootLogger if it doesn't exist yet.
13
+ if _fullname=='root'
14
+ return RootLogger.instance
15
+ end
16
+ if _fullname=='global'
17
+ return GlobalLogger.instance
18
+ end
19
+ Repository[_fullname]
20
+ end
21
+
22
+ class LoggerFactory #:nodoc:
23
+ # we want to log if root.lev <= lev && logger.lev <= lev
24
+ # BTW, root is guaranteed to be defined by this point
25
+ def self.define_methods(logger)
26
+ undefine_methods(logger)
27
+ globlev = Log4r::Logger['global'].level
28
+ return if logger.level == OFF or globlev == OFF
29
+ toggle_methods(globlev, logger)
30
+ end
31
+
32
+ # Logger logging methods are defined here.
33
+ def self.set_log(logger, lname)
34
+ # invoke caller iff the logger invoked is tracing
35
+ tracercall = (logger.trace ? "caller" : "nil")
36
+ # maybe pass parent a logevent. second arg is the switch
37
+ if logger.additive && !logger.is_root?
38
+ parentcall = "@parent.#{lname.downcase}(event, true)"
39
+ end
40
+ mstr = %-
41
+ def logger.#{lname.downcase}(data=nil, propagated=false)
42
+ if propagated then event = data
43
+ else
44
+ data = yield if block_given?
45
+ event = LogEvent.new(#{lname}, self, #{tracercall}, data)
46
+ end
47
+ @outputters.each {|o| o.#{lname.downcase}(event) }
48
+ #{parentcall}
49
+ end
50
+ -
51
+ module_eval mstr
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,68 @@
1
+ module Log4r
2
+ class YamlConfigurator
3
+ # Given a filename, loads the YAML configuration for Log4r.
4
+ def self.load_yaml_files(filenames, yaml_sections = ['log4r_config'])
5
+ cfgs = []
6
+ yaml_sections.each do |yaml_section|
7
+ filenames.each do |filename|
8
+ log4r_config = nil
9
+ docs = File.open(filename)
10
+ begin
11
+ YAML.load_documents(docs) do |doc|
12
+ doc.has_key?(yaml_section) and log4r_config = doc[yaml_section] and break
13
+ end
14
+ rescue Exception => e
15
+ raise "YAML error, file: #{filename}, error=#{e.message}"
16
+ end
17
+ if log4r_config
18
+ cfgs << log4r_config
19
+ end
20
+ end
21
+ end
22
+
23
+ cfgs.each do |cfg|
24
+ decode_pre_config(cfg['pre_config']) unless cfg['pre_config'].nil?
25
+ end
26
+
27
+ cfgs.each do |cfg|
28
+ cfg['outputters'].each{ |op| decode_outputter(op)} unless cfg['outputters'].nil?
29
+ end
30
+
31
+ cfgs.each do |cfg|
32
+ cfg['loggers'].each{ |lo| decode_logger(lo)} unless cfg['loggers'].nil?
33
+ end
34
+
35
+ cfgs.each do |cfg|
36
+ cfg['logserver'].each{ |lo| decode_logserver(lo)} unless cfg['logserver'].nil?
37
+ end
38
+ end
39
+
40
+ def self.decode_pre_config(pre)
41
+ return Logger.root if pre.nil?
42
+ decode_custom_levels( pre['custom_levels'])
43
+ global_config( pre['global'])
44
+ root_config( pre['root'])
45
+ decode_parameters( pre['parameters'])
46
+ end
47
+
48
+ def self.root_config(e)
49
+ return if e.nil?
50
+ globlev = e['level']
51
+ return if globlev.nil?
52
+ lev = LNAMES.index(globlev) # find value in LNAMES
53
+ Log4rTools.validate_level(lev, 4) # choke on bad level
54
+ Logger.root.level = lev
55
+ end
56
+
57
+ def self.decode_logger(lo)
58
+ if lo['name'] == 'root'
59
+ l = Logger.root
60
+ elsif lo['name'] == 'global'
61
+ l = Logger.global
62
+ else
63
+ l = Logger.new lo['name']
64
+ end
65
+ decode_logger_common(l, lo)
66
+ end
67
+ end
68
+ end
@@ -1,4 +1,4 @@
1
1
  module ReasonableLog4r
2
2
  # the current version of this gem
3
- VERSION = "0.9.0"
3
+ VERSION = "1.0.0"
4
4
  end
@@ -7,7 +7,7 @@ Gem::Specification.new do |s|
7
7
  s.name = 'reasonable_log4r'
8
8
  s.version = ReasonableLog4r::VERSION
9
9
  s.license = 'New BSD License'
10
- s.date = '2012-09-16'
10
+ s.date = '2012-09-26'
11
11
  s.summary = "Patches log4r gem to make it work in a reasonable way(Tm)."
12
12
  s.description = "Reasonable patches to log4r gem including root loggers having outputters and yaml configurator supporting many files and yaml sections."
13
13
  s.authors = ["Keith Gabryelski"]
@@ -17,4 +17,7 @@ Gem::Specification.new do |s|
17
17
  s.require_path = 'lib'
18
18
  s.homepage = 'http://github.com/fiksu/reasonable_log4r'
19
19
  s.add_dependency 'log4r', '1.1.10'
20
+ s.add_dependency "pg"
21
+ s.add_dependency "rails", '>= 3.0.0'
22
+ s.add_dependency 'rspec-rails'
20
23
  end
data/spec/dummy/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/spec/dummy/README ADDED
@@ -0,0 +1 @@
1
+ == dummy project
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env rake
2
+ # Add your own tasks in files placed in lib/tasks ending in .rake,
3
+ # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
4
+
5
+ require File.expand_path('../config/application', __FILE__)
6
+
7
+ Dummy::Application.load_tasks
@@ -0,0 +1,15 @@
1
+ // This is a manifest file that'll be compiled into application.js, which will include all the files
2
+ // listed below.
3
+ //
4
+ // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5
+ // or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
6
+ //
7
+ // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8
+ // the compiled file.
9
+ //
10
+ // WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
11
+ // GO AFTER THE REQUIRES BELOW.
12
+ //
13
+ //= require jquery
14
+ //= require jquery_ujs
15
+ //= require_tree .