riess 0.0.8

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 (420) hide show
  1. data/examples/Getting_started_example.rb +17 -0
  2. data/lib/actions.rb +53 -0
  3. data/lib/checks.rb +39 -0
  4. data/lib/exceptions.rb +12 -0
  5. data/lib/finders.rb +129 -0
  6. data/lib/helpers.rb +115 -0
  7. data/lib/html_action_modules.rb +88 -0
  8. data/lib/html_check_modules.rb +161 -0
  9. data/lib/html_object_factory.rb +33 -0
  10. data/lib/html_objects.rb +57 -0
  11. data/lib/ieparser_extension.rb +416 -0
  12. data/lib/key_codes.rb +123 -0
  13. data/lib/popup.rb +57 -0
  14. data/lib/riess.rb +111 -0
  15. data/lib/test_reporter.rb +113 -0
  16. data/riess_stable_testing_release_1-0.0.8.gemspec +22 -0
  17. data/vendor/log4r-1.0.5/doc/contact.html +166 -0
  18. data/vendor/log4r-1.0.5/doc/contribute.html +165 -0
  19. data/vendor/log4r-1.0.5/doc/images/crush/logo2.png +0 -0
  20. data/vendor/log4r-1.0.5/doc/images/log4r-logo.png +0 -0
  21. data/vendor/log4r-1.0.5/doc/images/logo2.png +0 -0
  22. data/vendor/log4r-1.0.5/doc/index.html +228 -0
  23. data/vendor/log4r-1.0.5/doc/license.html +200 -0
  24. data/vendor/log4r-1.0.5/doc/log4r.css +111 -0
  25. data/vendor/log4r-1.0.5/doc/manual.html +593 -0
  26. data/vendor/log4r-1.0.5/doc/rdoc/blank.html +2 -0
  27. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r.html +105 -0
  28. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/BasicFormatter.html +133 -0
  29. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/BasicFormatter.src/M000073.html +18 -0
  30. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/BasicFormatter.src/M000074.html +22 -0
  31. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/BasicFormatter.src/M000075.html +25 -0
  32. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/ConfigError.html +60 -0
  33. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Configurator.html +151 -0
  34. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Configurator.src/M000003.html +16 -0
  35. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Configurator.src/M000004.html +16 -0
  36. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Configurator.src/M000005.html +25 -0
  37. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Configurator.src/M000006.html +19 -0
  38. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Configurator.src/M000007.html +19 -0
  39. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/DateFileOutputter.html +84 -0
  40. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/DateFileOutputter.src/M000010.html +33 -0
  41. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/DefaultFormatter.html +62 -0
  42. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/EmailOutputter.html +123 -0
  43. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/EmailOutputter.src/M000047.html +32 -0
  44. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/EmailOutputter.src/M000048.html +19 -0
  45. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/FileOutputter.html +99 -0
  46. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/FileOutputter.src/M000011.html +45 -0
  47. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Formatter.html +91 -0
  48. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Formatter.src/M000076.html +17 -0
  49. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Formatter.src/M000077.html +17 -0
  50. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/IOOutputter.html +112 -0
  51. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/IOOutputter.src/M000049.html +19 -0
  52. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/IOOutputter.src/M000050.html +18 -0
  53. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/IOOutputter.src/M000051.html +21 -0
  54. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Log4rTools.html +116 -0
  55. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Log4rTools.src/M000032.html +21 -0
  56. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Log4rTools.src/M000033.html +18 -0
  57. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Log4rTools.src/M000034.html +24 -0
  58. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Log4rTools.src/M000035.html +18 -0
  59. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/LogEvent.html +132 -0
  60. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/LogEvent.src/M000001.html +19 -0
  61. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/LogServer.html +103 -0
  62. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/LogServer.src/M000044.html +22 -0
  63. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/LogServer.src/M000045.html +18 -0
  64. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Logger.html +341 -0
  65. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Logger.src/M000052.html +16 -0
  66. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Logger.src/M000053.html +16 -0
  67. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Logger.src/M000054.html +20 -0
  68. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Logger.src/M000055.html +22 -0
  69. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Logger.src/M000056.html +20 -0
  70. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Logger.src/M000057.html +18 -0
  71. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Logger.src/M000058.html +20 -0
  72. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Logger.src/M000059.html +30 -0
  73. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Logger.src/M000060.html +22 -0
  74. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Logger.src/M000061.html +21 -0
  75. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Logger.src/M000062.html +24 -0
  76. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Logger.src/M000063.html +18 -0
  77. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Logger.src/M000064.html +19 -0
  78. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Logger.src/M000065.html +29 -0
  79. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Logger.src/M000066.html +22 -0
  80. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Logger.src/M000067.html +16 -0
  81. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Logger.src/M000068.html +18 -0
  82. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/ObjectFormatter.html +85 -0
  83. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/ObjectFormatter.src/M000009.html +21 -0
  84. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Outputter.html +229 -0
  85. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Outputter.src/M000015.html +25 -0
  86. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Outputter.src/M000016.html +16 -0
  87. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Outputter.src/M000017.html +16 -0
  88. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Outputter.src/M000018.html +18 -0
  89. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Outputter.src/M000019.html +18 -0
  90. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Outputter.src/M000020.html +18 -0
  91. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Outputter.src/M000021.html +23 -0
  92. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Outputter.src/M000022.html +21 -0
  93. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Outputter.src/M000023.html +26 -0
  94. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Outputter.src/M000024.html +29 -0
  95. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Outputter.src/M000025.html +17 -0
  96. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/PatternFormatter.html +120 -0
  97. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/PatternFormatter.src/M000046.html +23 -0
  98. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/RemoteOutputter.html +104 -0
  99. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/RemoteOutputter.src/M000012.html +22 -0
  100. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/RemoteOutputter.src/M000013.html +18 -0
  101. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/RemoteOutputter.src/M000014.html +18 -0
  102. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/RollingFileOutputter.html +111 -0
  103. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/RollingFileOutputter.src/M000069.html +45 -0
  104. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/RootLogger.html +173 -0
  105. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/RootLogger.src/M000036.html +23 -0
  106. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/RootLogger.src/M000037.html +16 -0
  107. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/RootLogger.src/M000038.html +16 -0
  108. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/RootLogger.src/M000039.html +16 -0
  109. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/RootLogger.src/M000040.html +16 -0
  110. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/RootLogger.src/M000041.html +16 -0
  111. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/RootLogger.src/M000042.html +16 -0
  112. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/RootLogger.src/M000043.html +16 -0
  113. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/SimpleFormatter.html +83 -0
  114. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/SimpleFormatter.src/M000026.html +19 -0
  115. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/StderrOutputter.html +76 -0
  116. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/StderrOutputter.src/M000002.html +18 -0
  117. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/StdoutOutputter.html +76 -0
  118. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/StdoutOutputter.src/M000008.html +18 -0
  119. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/SyslogOutputter.html +111 -0
  120. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/SyslogOutputter.src/M000070.html +22 -0
  121. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/SyslogOutputter.src/M000071.html +18 -0
  122. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/SyslogOutputter.src/M000072.html +21 -0
  123. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/YamlConfigurator.html +128 -0
  124. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/YamlConfigurator.src/M000027.html +16 -0
  125. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/YamlConfigurator.src/M000028.html +16 -0
  126. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/YamlConfigurator.src/M000029.html +25 -0
  127. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/YamlConfigurator.src/M000030.html +18 -0
  128. data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/YamlConfigurator.src/M000031.html +18 -0
  129. data/vendor/log4r-1.0.5/doc/rdoc/created.rid +1 -0
  130. data/vendor/log4r-1.0.5/doc/rdoc/files/log4r/configurator_rb.html +402 -0
  131. data/vendor/log4r-1.0.5/doc/rdoc/files/log4r/formatter/formatter_rb.html +152 -0
  132. data/vendor/log4r-1.0.5/doc/rdoc/files/log4r/formatter/patternformatter_rb.html +266 -0
  133. data/vendor/log4r-1.0.5/doc/rdoc/files/log4r/logger_rb.html +320 -0
  134. data/vendor/log4r-1.0.5/doc/rdoc/files/log4r/logserver_rb.html +191 -0
  135. data/vendor/log4r-1.0.5/doc/rdoc/files/log4r/outputter/datefileoutputter_rb.html +120 -0
  136. data/vendor/log4r-1.0.5/doc/rdoc/files/log4r/outputter/emailoutputter_rb.html +205 -0
  137. data/vendor/log4r-1.0.5/doc/rdoc/files/log4r/outputter/outputter_rb.html +254 -0
  138. data/vendor/log4r-1.0.5/doc/rdoc/files/log4r/outputter/syslogoutputter_rb.html +135 -0
  139. data/vendor/log4r-1.0.5/doc/rdoc/files/log4r/yamlconfigurator_rb.html +120 -0
  140. data/vendor/log4r-1.0.5/doc/rdoc/files/log4r_rb.html +228 -0
  141. data/vendor/log4r-1.0.5/doc/rdoc/fr_class_index.html +59 -0
  142. data/vendor/log4r-1.0.5/doc/rdoc/fr_file_index.html +45 -0
  143. data/vendor/log4r-1.0.5/doc/rdoc/fr_method_index.html +111 -0
  144. data/vendor/log4r-1.0.5/doc/rdoc/index.html +26 -0
  145. data/vendor/log4r-1.0.5/doc/rdoc/rdoc-style.css +79 -0
  146. data/vendor/log4r-1.0.5/examples/README +19 -0
  147. data/vendor/log4r-1.0.5/examples/customlevels.rb +34 -0
  148. data/vendor/log4r-1.0.5/examples/fileroll.rb +40 -0
  149. data/vendor/log4r-1.0.5/examples/log4r_yaml.yaml +0 -0
  150. data/vendor/log4r-1.0.5/examples/logclient.rb +25 -0
  151. data/vendor/log4r-1.0.5/examples/logserver.rb +18 -0
  152. data/vendor/log4r-1.0.5/examples/moderate.xml +29 -0
  153. data/vendor/log4r-1.0.5/examples/moderateconfig.rb +66 -0
  154. data/vendor/log4r-1.0.5/examples/myformatter.rb +23 -0
  155. data/vendor/log4r-1.0.5/examples/outofthebox.rb +21 -0
  156. data/vendor/log4r-1.0.5/examples/rrconfig.xml +63 -0
  157. data/vendor/log4r-1.0.5/examples/rrsetup.rb +42 -0
  158. data/vendor/log4r-1.0.5/examples/simpleconfig.rb +39 -0
  159. data/vendor/log4r-1.0.5/examples/xmlconfig.rb +25 -0
  160. data/vendor/log4r-1.0.5/examples/yaml.rb +30 -0
  161. data/vendor/log4r-1.0.5/src/log4r.rb +20 -0
  162. data/vendor/log4r-1.0.5/src/log4r/base.rb +74 -0
  163. data/vendor/log4r-1.0.5/src/log4r/config.rb +9 -0
  164. data/vendor/log4r-1.0.5/src/log4r/configurator.rb +224 -0
  165. data/vendor/log4r-1.0.5/src/log4r/formatter/formatter.rb +105 -0
  166. data/vendor/log4r-1.0.5/src/log4r/formatter/patternformatter.rb +108 -0
  167. data/vendor/log4r-1.0.5/src/log4r/lib/drbloader.rb +52 -0
  168. data/vendor/log4r-1.0.5/src/log4r/lib/xmlloader.rb +24 -0
  169. data/vendor/log4r-1.0.5/src/log4r/logevent.rb +28 -0
  170. data/vendor/log4r-1.0.5/src/log4r/logger.rb +194 -0
  171. data/vendor/log4r-1.0.5/src/log4r/loggerfactory.rb +89 -0
  172. data/vendor/log4r-1.0.5/src/log4r/logserver.rb +28 -0
  173. data/vendor/log4r-1.0.5/src/log4r/outputter/consoleoutputters.rb +18 -0
  174. data/vendor/log4r-1.0.5/src/log4r/outputter/datefileoutputter.rb +110 -0
  175. data/vendor/log4r-1.0.5/src/log4r/outputter/emailoutputter.rb +115 -0
  176. data/vendor/log4r-1.0.5/src/log4r/outputter/fileoutputter.rb +49 -0
  177. data/vendor/log4r-1.0.5/src/log4r/outputter/iooutputter.rb +55 -0
  178. data/vendor/log4r-1.0.5/src/log4r/outputter/outputter.rb +132 -0
  179. data/vendor/log4r-1.0.5/src/log4r/outputter/outputterfactory.rb +59 -0
  180. data/vendor/log4r-1.0.5/src/log4r/outputter/remoteoutputter.rb +40 -0
  181. data/vendor/log4r-1.0.5/src/log4r/outputter/rollingfileoutputter.rb +126 -0
  182. data/vendor/log4r-1.0.5/src/log4r/outputter/staticoutputter.rb +30 -0
  183. data/vendor/log4r-1.0.5/src/log4r/outputter/syslogoutputter.rb +75 -0
  184. data/vendor/log4r-1.0.5/src/log4r/rdoc/configurator +243 -0
  185. data/vendor/log4r-1.0.5/src/log4r/rdoc/emailoutputter +103 -0
  186. data/vendor/log4r-1.0.5/src/log4r/rdoc/formatter +39 -0
  187. data/vendor/log4r-1.0.5/src/log4r/rdoc/log4r +89 -0
  188. data/vendor/log4r-1.0.5/src/log4r/rdoc/logger +175 -0
  189. data/vendor/log4r-1.0.5/src/log4r/rdoc/logserver +85 -0
  190. data/vendor/log4r-1.0.5/src/log4r/rdoc/outputter +108 -0
  191. data/vendor/log4r-1.0.5/src/log4r/rdoc/patternformatter +128 -0
  192. data/vendor/log4r-1.0.5/src/log4r/rdoc/syslogoutputter +29 -0
  193. data/vendor/log4r-1.0.5/src/log4r/rdoc/yamlconfigurator +20 -0
  194. data/vendor/log4r-1.0.5/src/log4r/repository.rb +65 -0
  195. data/vendor/log4r-1.0.5/src/log4r/staticlogger.rb +49 -0
  196. data/vendor/log4r-1.0.5/src/log4r/yamlconfigurator.rb +0 -0
  197. data/vendor/log4r-1.0.5/tests/include.rb +7 -0
  198. data/vendor/log4r-1.0.5/tests/runtest.rb +6 -0
  199. data/vendor/log4r-1.0.5/tests/testbase.rb +45 -0
  200. data/vendor/log4r-1.0.5/tests/testcustom.rb +33 -0
  201. data/vendor/log4r-1.0.5/tests/testdefault.rb +25 -0
  202. data/vendor/log4r-1.0.5/tests/testformatter.rb +29 -0
  203. data/vendor/log4r-1.0.5/tests/testlogger.rb +198 -0
  204. data/vendor/log4r-1.0.5/tests/testoutputter.rb +112 -0
  205. data/vendor/log4r-1.0.5/tests/testpatternformatter.rb +26 -0
  206. data/vendor/log4r-1.0.5/tests/testxmlconf.rb +51 -0
  207. data/vendor/log4r-1.0.5/tests/xml/testconf.xml +37 -0
  208. data/vendor/rspec-0.8.2/CHANGES +575 -0
  209. data/vendor/rspec-0.8.2/EXAMPLES.rd +81 -0
  210. data/vendor/rspec-0.8.2/MIT-LICENSE +20 -0
  211. data/vendor/rspec-0.8.2/README +57 -0
  212. data/vendor/rspec-0.8.2/RELEASE-PLAN +117 -0
  213. data/vendor/rspec-0.8.2/Rakefile +223 -0
  214. data/vendor/rspec-0.8.2/bin/spec +4 -0
  215. data/vendor/rspec-0.8.2/examples/auto_spec_name_generation_example.rb +18 -0
  216. data/vendor/rspec-0.8.2/examples/custom_expectation_matchers.rb +53 -0
  217. data/vendor/rspec-0.8.2/examples/custom_formatter.rb +11 -0
  218. data/vendor/rspec-0.8.2/examples/dynamic_spec.rb +9 -0
  219. data/vendor/rspec-0.8.2/examples/file_accessor.rb +18 -0
  220. data/vendor/rspec-0.8.2/examples/file_accessor_spec.rb +38 -0
  221. data/vendor/rspec-0.8.2/examples/greeter_spec.rb +30 -0
  222. data/vendor/rspec-0.8.2/examples/helper_method_example.rb +11 -0
  223. data/vendor/rspec-0.8.2/examples/io_processor.rb +8 -0
  224. data/vendor/rspec-0.8.2/examples/io_processor_spec.rb +21 -0
  225. data/vendor/rspec-0.8.2/examples/mocking_example.rb +27 -0
  226. data/vendor/rspec-0.8.2/examples/partial_mock_example.rb +28 -0
  227. data/vendor/rspec-0.8.2/examples/predicate_example.rb +27 -0
  228. data/vendor/rspec-0.8.2/examples/setup_teardown_example.rb +34 -0
  229. data/vendor/rspec-0.8.2/examples/spec_helper.rb +1 -0
  230. data/vendor/rspec-0.8.2/examples/stack.rb +36 -0
  231. data/vendor/rspec-0.8.2/examples/stack_spec.rb +113 -0
  232. data/vendor/rspec-0.8.2/examples/stubbing_example.rb +69 -0
  233. data/vendor/rspec-0.8.2/examples/test_case_spec.rb +63 -0
  234. data/vendor/rspec-0.8.2/lib/spec.rb +11 -0
  235. data/vendor/rspec-0.8.2/lib/spec/callback.rb +11 -0
  236. data/vendor/rspec-0.8.2/lib/spec/callback/callback_container.rb +60 -0
  237. data/vendor/rspec-0.8.2/lib/spec/callback/extensions/module.rb +24 -0
  238. data/vendor/rspec-0.8.2/lib/spec/callback/extensions/object.rb +37 -0
  239. data/vendor/rspec-0.8.2/lib/spec/deprecated.rb +3 -0
  240. data/vendor/rspec-0.8.2/lib/spec/expectations.rb +59 -0
  241. data/vendor/rspec-0.8.2/lib/spec/expectations/differs/default.rb +62 -0
  242. data/vendor/rspec-0.8.2/lib/spec/expectations/errors.rb +6 -0
  243. data/vendor/rspec-0.8.2/lib/spec/expectations/extensions.rb +3 -0
  244. data/vendor/rspec-0.8.2/lib/spec/expectations/extensions/object.rb +109 -0
  245. data/vendor/rspec-0.8.2/lib/spec/expectations/extensions/proc.rb +57 -0
  246. data/vendor/rspec-0.8.2/lib/spec/expectations/extensions/string_and_symbol.rb +17 -0
  247. data/vendor/rspec-0.8.2/lib/spec/expectations/handler.rb +47 -0
  248. data/vendor/rspec-0.8.2/lib/spec/expectations/should.rb +5 -0
  249. data/vendor/rspec-0.8.2/lib/spec/expectations/should/base.rb +64 -0
  250. data/vendor/rspec-0.8.2/lib/spec/expectations/should/change.rb +69 -0
  251. data/vendor/rspec-0.8.2/lib/spec/expectations/should/have.rb +128 -0
  252. data/vendor/rspec-0.8.2/lib/spec/expectations/should/not.rb +74 -0
  253. data/vendor/rspec-0.8.2/lib/spec/expectations/should/should.rb +81 -0
  254. data/vendor/rspec-0.8.2/lib/spec/expectations/sugar.rb +47 -0
  255. data/vendor/rspec-0.8.2/lib/spec/matchers.rb +160 -0
  256. data/vendor/rspec-0.8.2/lib/spec/matchers/be.rb +161 -0
  257. data/vendor/rspec-0.8.2/lib/spec/matchers/be_close.rb +37 -0
  258. data/vendor/rspec-0.8.2/lib/spec/matchers/change.rb +120 -0
  259. data/vendor/rspec-0.8.2/lib/spec/matchers/eql.rb +43 -0
  260. data/vendor/rspec-0.8.2/lib/spec/matchers/equal.rb +43 -0
  261. data/vendor/rspec-0.8.2/lib/spec/matchers/has.rb +44 -0
  262. data/vendor/rspec-0.8.2/lib/spec/matchers/have.rb +140 -0
  263. data/vendor/rspec-0.8.2/lib/spec/matchers/include.rb +50 -0
  264. data/vendor/rspec-0.8.2/lib/spec/matchers/match.rb +41 -0
  265. data/vendor/rspec-0.8.2/lib/spec/matchers/raise_error.rb +100 -0
  266. data/vendor/rspec-0.8.2/lib/spec/matchers/respond_to.rb +35 -0
  267. data/vendor/rspec-0.8.2/lib/spec/matchers/satisfy.rb +47 -0
  268. data/vendor/rspec-0.8.2/lib/spec/matchers/throw_symbol.rb +75 -0
  269. data/vendor/rspec-0.8.2/lib/spec/mocks.rb +232 -0
  270. data/vendor/rspec-0.8.2/lib/spec/mocks/argument_expectation.rb +132 -0
  271. data/vendor/rspec-0.8.2/lib/spec/mocks/error_generator.rb +85 -0
  272. data/vendor/rspec-0.8.2/lib/spec/mocks/errors.rb +10 -0
  273. data/vendor/rspec-0.8.2/lib/spec/mocks/extensions/object.rb +3 -0
  274. data/vendor/rspec-0.8.2/lib/spec/mocks/message_expectation.rb +231 -0
  275. data/vendor/rspec-0.8.2/lib/spec/mocks/methods.rb +40 -0
  276. data/vendor/rspec-0.8.2/lib/spec/mocks/mock.rb +26 -0
  277. data/vendor/rspec-0.8.2/lib/spec/mocks/mock_handler.rb +166 -0
  278. data/vendor/rspec-0.8.2/lib/spec/mocks/order_group.rb +29 -0
  279. data/vendor/rspec-0.8.2/lib/spec/rake/spectask.rb +173 -0
  280. data/vendor/rspec-0.8.2/lib/spec/rake/verify_rcov.rb +47 -0
  281. data/vendor/rspec-0.8.2/lib/spec/runner.rb +132 -0
  282. data/vendor/rspec-0.8.2/lib/spec/runner/backtrace_tweaker.rb +55 -0
  283. data/vendor/rspec-0.8.2/lib/spec/runner/command_line.rb +34 -0
  284. data/vendor/rspec-0.8.2/lib/spec/runner/context.rb +154 -0
  285. data/vendor/rspec-0.8.2/lib/spec/runner/context_eval.rb +142 -0
  286. data/vendor/rspec-0.8.2/lib/spec/runner/context_runner.rb +55 -0
  287. data/vendor/rspec-0.8.2/lib/spec/runner/drb_command_line.rb +21 -0
  288. data/vendor/rspec-0.8.2/lib/spec/runner/execution_context.rb +17 -0
  289. data/vendor/rspec-0.8.2/lib/spec/runner/extensions/kernel.rb +17 -0
  290. data/vendor/rspec-0.8.2/lib/spec/runner/extensions/object.rb +32 -0
  291. data/vendor/rspec-0.8.2/lib/spec/runner/formatter.rb +5 -0
  292. data/vendor/rspec-0.8.2/lib/spec/runner/formatter/base_text_formatter.rb +118 -0
  293. data/vendor/rspec-0.8.2/lib/spec/runner/formatter/html_formatter.rb +219 -0
  294. data/vendor/rspec-0.8.2/lib/spec/runner/formatter/progress_bar_formatter.rb +27 -0
  295. data/vendor/rspec-0.8.2/lib/spec/runner/formatter/rdoc_formatter.rb +22 -0
  296. data/vendor/rspec-0.8.2/lib/spec/runner/formatter/specdoc_formatter.rb +23 -0
  297. data/vendor/rspec-0.8.2/lib/spec/runner/heckle_runner.rb +71 -0
  298. data/vendor/rspec-0.8.2/lib/spec/runner/heckle_runner_win.rb +10 -0
  299. data/vendor/rspec-0.8.2/lib/spec/runner/option_parser.rb +224 -0
  300. data/vendor/rspec-0.8.2/lib/spec/runner/reporter.rb +105 -0
  301. data/vendor/rspec-0.8.2/lib/spec/runner/spec_matcher.rb +25 -0
  302. data/vendor/rspec-0.8.2/lib/spec/runner/spec_parser.rb +41 -0
  303. data/vendor/rspec-0.8.2/lib/spec/runner/spec_should_raise_handler.rb +74 -0
  304. data/vendor/rspec-0.8.2/lib/spec/runner/specification.rb +114 -0
  305. data/vendor/rspec-0.8.2/lib/spec/translator.rb +87 -0
  306. data/vendor/rspec-0.8.2/lib/spec/version.rb +30 -0
  307. data/vendor/rspec-0.8.2/spec/spec/callback/callback_container_spec.rb +27 -0
  308. data/vendor/rspec-0.8.2/spec/spec/callback/module_spec.rb +37 -0
  309. data/vendor/rspec-0.8.2/spec/spec/callback/object_spec.rb +90 -0
  310. data/vendor/rspec-0.8.2/spec/spec/callback/object_with_class_callback_spec.rb +19 -0
  311. data/vendor/rspec-0.8.2/spec/spec/expectations/differs/default_spec.rb +107 -0
  312. data/vendor/rspec-0.8.2/spec/spec/expectations/extensions/object_spec.rb +46 -0
  313. data/vendor/rspec-0.8.2/spec/spec/expectations/fail_with_spec.rb +71 -0
  314. data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_==_spec.rb +19 -0
  315. data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_=~_spec.rb +13 -0
  316. data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_be_a_kind_of_spec.rb +21 -0
  317. data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_be_an_instance_of_spec.rb +30 -0
  318. data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_be_arbitrary_predicate_spec.rb +81 -0
  319. data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_be_close_spec.rb +18 -0
  320. data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_be_comparison_operator_spec.rb +44 -0
  321. data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_be_false_spec.rb +39 -0
  322. data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_be_spec.rb +11 -0
  323. data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_be_true_spec.rb +27 -0
  324. data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_change_spec.rb +184 -0
  325. data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_eql_spec.rb +11 -0
  326. data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_equal_spec.rb +11 -0
  327. data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_have_at_least_spec.rb +53 -0
  328. data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_have_at_most_spec.rb +45 -0
  329. data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_have_key_spec.rb +21 -0
  330. data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_have_spec.rb +64 -0
  331. data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_include_spec.rb +59 -0
  332. data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_match_spec.rb +25 -0
  333. data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_not_==_spec.rb +15 -0
  334. data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_not_be_a_kind_of_spec.rb +21 -0
  335. data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_not_be_an_instance_of_spec.rb +11 -0
  336. data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_not_be_arbitrary_predicate_spec.rb +68 -0
  337. data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_not_be_spec.rb +11 -0
  338. data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_not_change_spec.rb +24 -0
  339. data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_not_eql_spec.rb +11 -0
  340. data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_not_equal_spec.rb +11 -0
  341. data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_not_have_key_spec.rb +15 -0
  342. data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_not_include_spec.rb +58 -0
  343. data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_not_match_spec.rb +11 -0
  344. data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_not_raise_spec.rb +75 -0
  345. data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_not_respond_to_spec.rb +15 -0
  346. data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_not_throw_spec.rb +35 -0
  347. data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_raise_spec.rb +66 -0
  348. data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_respond_to_spec.rb +15 -0
  349. data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_satisfy_spec.rb +35 -0
  350. data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_throw_spec.rb +27 -0
  351. data/vendor/rspec-0.8.2/spec/spec/matchers/be_close_spec.rb +33 -0
  352. data/vendor/rspec-0.8.2/spec/spec/matchers/be_spec.rb +182 -0
  353. data/vendor/rspec-0.8.2/spec/spec/matchers/change_spec.rb +232 -0
  354. data/vendor/rspec-0.8.2/spec/spec/matchers/description_generation_spec.rb +147 -0
  355. data/vendor/rspec-0.8.2/spec/spec/matchers/eql_spec.rb +41 -0
  356. data/vendor/rspec-0.8.2/spec/spec/matchers/equal_spec.rb +41 -0
  357. data/vendor/rspec-0.8.2/spec/spec/matchers/handler_spec.rb +75 -0
  358. data/vendor/rspec-0.8.2/spec/spec/matchers/has_spec.rb +37 -0
  359. data/vendor/rspec-0.8.2/spec/spec/matchers/have_spec.rb +259 -0
  360. data/vendor/rspec-0.8.2/spec/spec/matchers/include_spec.rb +33 -0
  361. data/vendor/rspec-0.8.2/spec/spec/matchers/match_spec.rb +37 -0
  362. data/vendor/rspec-0.8.2/spec/spec/matchers/matcher_methods_spec.rb +85 -0
  363. data/vendor/rspec-0.8.2/spec/spec/matchers/raise_error_spec.rb +147 -0
  364. data/vendor/rspec-0.8.2/spec/spec/matchers/respond_to_spec.rb +30 -0
  365. data/vendor/rspec-0.8.2/spec/spec/matchers/satisfy_spec.rb +36 -0
  366. data/vendor/rspec-0.8.2/spec/spec/matchers/throw_symbol_spec.rb +59 -0
  367. data/vendor/rspec-0.8.2/spec/spec/mocks/any_number_of_times_spec.rb +34 -0
  368. data/vendor/rspec-0.8.2/spec/spec/mocks/argument_expectation_spec.rb +19 -0
  369. data/vendor/rspec-0.8.2/spec/spec/mocks/at_least_spec.rb +97 -0
  370. data/vendor/rspec-0.8.2/spec/spec/mocks/at_most_spec.rb +97 -0
  371. data/vendor/rspec-0.8.2/spec/spec/mocks/bug_report_7611_spec.rb +19 -0
  372. data/vendor/rspec-0.8.2/spec/spec/mocks/bug_report_7805_spec.rb +22 -0
  373. data/vendor/rspec-0.8.2/spec/spec/mocks/bug_report_8165_spec.rb +31 -0
  374. data/vendor/rspec-0.8.2/spec/spec/mocks/bug_report_8302_spec.rb +26 -0
  375. data/vendor/rspec-0.8.2/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +74 -0
  376. data/vendor/rspec-0.8.2/spec/spec/mocks/mock_ordering_spec.rb +80 -0
  377. data/vendor/rspec-0.8.2/spec/spec/mocks/mock_spec.rb +407 -0
  378. data/vendor/rspec-0.8.2/spec/spec/mocks/multiple_return_value_spec.rb +113 -0
  379. data/vendor/rspec-0.8.2/spec/spec/mocks/null_object_mock_spec.rb +40 -0
  380. data/vendor/rspec-0.8.2/spec/spec/mocks/once_counts_spec.rb +56 -0
  381. data/vendor/rspec-0.8.2/spec/spec/mocks/options_hash_spec.rb +31 -0
  382. data/vendor/rspec-0.8.2/spec/spec/mocks/partial_mock_spec.rb +52 -0
  383. data/vendor/rspec-0.8.2/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +64 -0
  384. data/vendor/rspec-0.8.2/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +92 -0
  385. data/vendor/rspec-0.8.2/spec/spec/mocks/precise_counts_spec.rb +56 -0
  386. data/vendor/rspec-0.8.2/spec/spec/mocks/record_messages_spec.rb +26 -0
  387. data/vendor/rspec-0.8.2/spec/spec/mocks/stub_spec.rb +159 -0
  388. data/vendor/rspec-0.8.2/spec/spec/mocks/twice_counts_spec.rb +67 -0
  389. data/vendor/rspec-0.8.2/spec/spec/runner/command_line_spec.rb +32 -0
  390. data/vendor/rspec-0.8.2/spec/spec/runner/context_matching_spec.rb +28 -0
  391. data/vendor/rspec-0.8.2/spec/spec/runner/context_runner_spec.rb +100 -0
  392. data/vendor/rspec-0.8.2/spec/spec/runner/context_spec.rb +405 -0
  393. data/vendor/rspec-0.8.2/spec/spec/runner/drb_command_line_spec.rb +74 -0
  394. data/vendor/rspec-0.8.2/spec/spec/runner/execution_context_spec.rb +52 -0
  395. data/vendor/rspec-0.8.2/spec/spec/runner/formatter/html_formatter_spec.rb +40 -0
  396. data/vendor/rspec-0.8.2/spec/spec/runner/formatter/progress_bar_formatter_dry_run_spec.rb +21 -0
  397. data/vendor/rspec-0.8.2/spec/spec/runner/formatter/progress_bar_formatter_failure_dump_spec.rb +36 -0
  398. data/vendor/rspec-0.8.2/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +78 -0
  399. data/vendor/rspec-0.8.2/spec/spec/runner/formatter/rdoc_formatter_dry_run_spec.rb +18 -0
  400. data/vendor/rspec-0.8.2/spec/spec/runner/formatter/rdoc_formatter_spec.rb +41 -0
  401. data/vendor/rspec-0.8.2/spec/spec/runner/formatter/specdoc_formatter_dry_run_spec.rb +21 -0
  402. data/vendor/rspec-0.8.2/spec/spec/runner/formatter/specdoc_formatter_spec.rb +46 -0
  403. data/vendor/rspec-0.8.2/spec/spec/runner/heckle_runner_spec.rb +63 -0
  404. data/vendor/rspec-0.8.2/spec/spec/runner/heckler_spec.rb +14 -0
  405. data/vendor/rspec-0.8.2/spec/spec/runner/kernel_ext_spec.rb +16 -0
  406. data/vendor/rspec-0.8.2/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +45 -0
  407. data/vendor/rspec-0.8.2/spec/spec/runner/object_ext_spec.rb +11 -0
  408. data/vendor/rspec-0.8.2/spec/spec/runner/option_parser_spec.rb +269 -0
  409. data/vendor/rspec-0.8.2/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +47 -0
  410. data/vendor/rspec-0.8.2/spec/spec/runner/reporter_spec.rb +126 -0
  411. data/vendor/rspec-0.8.2/spec/spec/runner/spec_matcher_spec.rb +107 -0
  412. data/vendor/rspec-0.8.2/spec/spec/runner/spec_name_generation_spec.rb +102 -0
  413. data/vendor/rspec-0.8.2/spec/spec/runner/spec_parser_spec.rb +37 -0
  414. data/vendor/rspec-0.8.2/spec/spec/runner/specification_class_spec.rb +72 -0
  415. data/vendor/rspec-0.8.2/spec/spec/runner/specification_instance_spec.rb +160 -0
  416. data/vendor/rspec-0.8.2/spec/spec/runner/specification_should_raise_spec.rb +136 -0
  417. data/vendor/rspec-0.8.2/spec/spec/spec_classes.rb +102 -0
  418. data/vendor/rspec-0.8.2/spec/spec/translator_spec.rb +79 -0
  419. data/vendor/rspec-0.8.2/spec/spec_helper.rb +35 -0
  420. metadata +537 -0
@@ -0,0 +1,111 @@
1
+ body {
2
+ background-color: #FFFFFF;
3
+ font-family:sans-serif;
4
+ }
5
+
6
+ a:link { color:#014DA3 }
7
+ a:active { color:#AA0000 }
8
+ a:visited { color:#014DA3 }
9
+ a:hoover { color:#AA0000 }
10
+
11
+ .example {
12
+ font-family: monospace;
13
+ border:1px solid #007;
14
+ background:#FFFFFF;
15
+ margin:1em;
16
+ }
17
+
18
+ pre.box {
19
+ margin:0px 1em 1em 1em;
20
+ color:#AA0000;
21
+ }
22
+
23
+ .menu {
24
+ font-family:sans-serif;
25
+ font-size:10px;
26
+ border-left: 1px solid #AA0000;
27
+ border-right: 1px solid #AA0000;
28
+ border-bottom: 1px solid #AA0000;
29
+ background:#EEEEEE;
30
+ color:#AA0000;
31
+ }
32
+
33
+ .menutitle {
34
+ font-family:sans-serif;
35
+ font-size:medium;
36
+ color:#FFFFFF;
37
+ font-weight:bold;
38
+ background:#AA0000;
39
+ border-right: 1px solid #AA0000;
40
+ border-left: 1px solid #AA0000;
41
+ border-top: 1px solid #AA0000;
42
+ border-bottom: 1px solid #AA0000;
43
+ }
44
+
45
+ .menubuff {
46
+ font-family:sans-serif;
47
+ font-size:1px;
48
+ color:#000000;
49
+ border-left: 1px solid #AA0000;
50
+ border-right: 1px solid #AA0000;
51
+ font-weight:bold;
52
+ background-color: #99CCFF;
53
+ height:5;
54
+ padding-bottom: 0;
55
+ }
56
+
57
+ .contentbuff {
58
+ font-family:sans-serif;
59
+ font-size:10px;
60
+ border-left: 1px solid #AA0000;
61
+ border-right: 1px solid #AA0000;
62
+ font-weight:bold;
63
+ background-color: #99CCFF;
64
+ height:5;
65
+ padding-bottom: 0;
66
+ }
67
+
68
+ .header {
69
+ font-family:sans-serif;
70
+ color:#AA0000;
71
+ }
72
+
73
+ .content {
74
+ font-family:sans-serif;
75
+ font-size:medium;
76
+ color:#000000;
77
+ background:#EEEEEE;
78
+ border-right: 2px solid #AA0000;
79
+ border-left: 2px solid #AA0000;
80
+ border-bottom: 2px solid #AA0000;
81
+ padding-bottom: 5;
82
+ padding-right: 5;
83
+ padding-left: 5;
84
+ padding-top: 0;
85
+ }
86
+ .contenttitle {
87
+ font-family:sans-serif;
88
+ font-size:medium;
89
+ color:#FFFFFF;
90
+ font-weight:bold;
91
+ background-color:#AA0000;
92
+ border-left: 2px solid #AA0000;
93
+ border-top: 1px solid #AA0000;
94
+ border-right: 2px solid #AA0000;
95
+ padding: 2;
96
+ }
97
+
98
+ .contentbuff {
99
+ font-family:sans-serif;
100
+ font-size:10px;
101
+ color:#014DA3;
102
+ border-left: 2px solid #AA0000;
103
+ border-right: 2px solid #AA0000;
104
+ font-weight:bold;
105
+ background-color:#99CCFF;
106
+ height:13;
107
+ padding-bottom: 0;
108
+ }
109
+
110
+ br { padding-bottom: 200 }
111
+
@@ -0,0 +1,593 @@
1
+ <html>
2
+ <head>
3
+ <title>1.0.5 Log4r Manual</title>
4
+ <link rel="stylesheet" type="text/css" href="log4r.css">
5
+ </head>
6
+ <body>
7
+
8
+ <div align="right"><img src="images/log4r-logo.png"/></div>
9
+ <hr noshade>
10
+
11
+ <table border="0" cellspacing="3" cellpadding="0" width="100%">
12
+ <tr>
13
+
14
+ <!-- Sidebar -->
15
+ <td width="15%" valign="top">
16
+ <table cellspacing="0" cellpadding="0" width=100%" nowrap="true">
17
+
18
+ <!-- Log4r Box -->
19
+ <tr><td >
20
+ <table width="100%" cellspacing="0" cellpadding="0" align="center" >
21
+ <tr><td width="100%" class="menutitle">Log4r</td></tr>
22
+ <tr><td width="100%" class="menubuff">&nbsp;</td></tr>
23
+ <!-- list -->
24
+ <table class="menu" cellspacing="3" cellpadding="0" width="100%"
25
+ align="center">
26
+ <tr><td ><a href="index.html">Home Page</a></tr></td>
27
+ <tr><td><a href="http://sourceforge.net/project/showfiles.php?group_id=43396">
28
+ Download</a></td></tr>
29
+ <tr><td nowrap="true">
30
+ <a href="http://sourceforge.net/projects/log4r/">@ SourceForge</a>
31
+ </td></tr>
32
+ <tr><td>
33
+ <a href="license.html">License</a>
34
+ </td></tr>
35
+ <tr><td>
36
+ <a href="contact.html">Contact</a>
37
+ </td></tr>
38
+ </table>
39
+ </td></tr>
40
+
41
+ <tr><td height=15>&nbsp;</td></tr>
42
+
43
+ <!-- Doc Box -->
44
+ <tr><td >
45
+ <table cellspacing="0" cellpadding="0" align="center" width="100%">
46
+ <tr><td width="100%" class="menutitle">Documents</td></tr>
47
+ <tr><td width="100%" class="menubuff">&nbsp;</td></tr>
48
+ <!-- list -->
49
+ <table class="menu" cellspacing="3" cellpadding="0" width="100%"
50
+ align="center">
51
+ <tr><td>
52
+ <a href="manual.html">1.0.5 Manual</a>
53
+ </tr></tr>
54
+ <tr><td>
55
+ <a href="rdoc/index.html">1.0.5 RDoc API</a>
56
+ </td></tr>
57
+
58
+ </table>
59
+ </td></tr>
60
+
61
+ <tr><td height=15>&nbsp;</td></tr>
62
+
63
+ <!-- Development Box -->
64
+ <tr><td >
65
+ <table cellspacing="0" cellpadding="0" align="center" width="100%">
66
+ <tr><td width="100%" class="menutitle">Development</td></tr>
67
+ <tr><td width="100%" class="menubuff">&nbsp;</td></tr>
68
+ <!-- list -->
69
+ <table class="menu" cellspacing="3" cellpadding="0" width="100%"
70
+ align="center">
71
+ <tr><td>
72
+ <a
73
+ href="http://sourceforge.net/tracker/?atid=436181&group_id=43396&func=browse">
74
+ Bugs</a>
75
+ </tr></tr>
76
+ <tr><td>
77
+ <a
78
+ href="http://sourceforge.net/tracker/?atid=436184&group_id=43396&func=browse">
79
+ Requests</a>
80
+ </td></tr>
81
+ <tr><td>
82
+ <a href="contribute.html">Contribute</a>
83
+ </td></tr>
84
+
85
+ </table>
86
+ </td></tr>
87
+
88
+ <tr><td height=15>&nbsp;</td></tr>
89
+
90
+
91
+ <!-- Link Box -->
92
+ <tr><td >
93
+ <table cellspacing="0" cellpadding="0" align="center" width="100%">
94
+ <tr><td width="100%" class="menutitle">Links</td></tr>
95
+ <tr><td width="100%" class="menubuff">&nbsp;</td></tr>
96
+ <!-- list -->
97
+ <table class="menu" cellspacing="3" cellpadding="0" width="100%"
98
+ align="center">
99
+ <tr><td>
100
+ <a href="http://www.ruby-lang.org/en/index.html">Ruby</a>
101
+ </td></tr>
102
+ <tr><td>
103
+ <a href="http://jakarta.apache.org/log4j/docs/index.html">Apache Log4j</a>
104
+ </tr></tr>
105
+ <tr><td>
106
+ <a href="http://www.ruby-lang.org/en/raa-list.rhtml?name=REXML">REXML</a>
107
+ </td></tr>
108
+ <tr><td>
109
+ <a href="http://rm-f.net/~cout/ruby/romp/">ROMP</a>
110
+ </td></tr>
111
+ <tr><td height="5">&nbsp;</td></tr>
112
+ <tr><td align="center">
113
+ <a href="http://sourceforge.net">
114
+ <img
115
+ src="http://sourceforge.net/sflogo.php?group_id=43396" width="88" height="31"
116
+ border="0" alt="SourceForge Logo"></a>
117
+ </td></tr>
118
+
119
+ </table>
120
+ </td></tr>
121
+
122
+ </table>
123
+ </td>
124
+
125
+ <!-- Main column -->
126
+ <td width="85%" align="left" valign="top">
127
+ <center>
128
+ <table cellspacing="0" cellpadding="0" align="center" width="95%">
129
+
130
+
131
+ <tr><td width="100%" class="contenttitle">1.0.5 Log4r Manual</td></tr>
132
+ <tr><td width="100%" class="contentbuff">&nbsp;</td></tr>
133
+ <tr><td width="100%" class="content">
134
+
135
+ <a name="toc">
136
+ <h4 ><a href="#toc">Table of Contents</a></h4>
137
+
138
+ <ul>
139
+ <li><a href="#scope">Scope of This Manual</a>
140
+ <li><a href="#is">What Log4r Is</a>
141
+ <li><a href="#outofbox">Out of the Box</a>
142
+ <li><a href="#overview">Overview</a>
143
+ <ul>
144
+ <li><a href="#levels"> Levels</a>
145
+ <li><a href="#loggers"> Loggers</a>
146
+ <li><a href="#outputters"> Outputters</a>
147
+ <li><a href="#formatters"> Formatters</a>
148
+ <li><a href="#config"> Configuration</a>
149
+ <li><a href="#remote"> Remote Logging</a>
150
+ </ul>
151
+ <li><a href="#art">The Art of Logging</a>
152
+ <ul>
153
+ <li><a href="#avoid">Avoiding Parameter Evaluation</a>
154
+ <li><a href="#howmany">How Many?</a>
155
+ <li><a href="#whereto">Where To?</a>
156
+ <li><a href="#tracing">Where From?</a>
157
+ <li><a href="#who">Who's Talking?</a>
158
+ <li><a href="#nullobj">The Null Logger</a>
159
+ </ul>
160
+ <li><a href="#gotchas">Gotchas</a>
161
+ <li><a href="#performance">Performance</a>
162
+ <li><a href="#project">The Project Itself</a>
163
+ </ul>
164
+
165
+ <hr noshade color="#AA0000">
166
+
167
+ <a name="scope">
168
+ <h4 ><a href="#toc">Scope of this Manual</a></h4>
169
+
170
+ Most of the API documentation resides in the
171
+ <a href="rdoc/index.html">Log4r RDoc API</a>, so this manual will be brief
172
+ and targeted to people starting to learn about Log4r or who want to see
173
+ what Log4r has to offer.
174
+ <p/>
175
+ Besides the general overview, a section called
176
+ <a href="#art">The Art of Logging</a> provides tricks and tips in using
177
+ Log4r efficiently.
178
+ <p/>
179
+ Click on the section title to go back to the
180
+ <a href="#toc">Table of Contents</a> at any time.
181
+
182
+ <p/><hr noshade color="#AA0000">
183
+ <a name="is">
184
+ <h4 ><a href="#toc">What Log4r Is</a></h4>
185
+ Log4r is a comprehensive and flexible logging library written in Ruby
186
+ for use in Ruby programs. It features a heiarchial logging system
187
+ of any number of levels, custom level names, logger inheritance,
188
+ multiple output destinations, execution tracing, custom formatting, thread
189
+ safteyness, XML and YAML configuration, and more.
190
+ <p/>
191
+ Log4r is an adherent to the philosophy of logging using simple print
192
+ statements. What Log4r adds to this philosophy is a flexible way of
193
+ controling the information being logged. Log information can be sent to
194
+ any kind of destination and with varying degrees of importance. Log4r is
195
+ designed so that logging statements can remain in production code with
196
+ almost no extra computational cost.
197
+ <p/>
198
+ Log4r intends to be easy to use and configure, no matter the complexity.
199
+ Casual scripts can use Log4r right away with minimal configuration, while
200
+ more sophisticated applications can set up a structured configuration file
201
+ in XML or YAML. Comprehensive documentation is provided, with a user's manual,
202
+ a reference API, and over a dozen examples. Log4r attempts to abide by the
203
+ Principle of Least Surprise, which means that it works as intended at all
204
+ points.
205
+ <p/>
206
+ Log4r was inspired by and provides much of the features of the
207
+ <a href="http://jakarta.apache.org/log4j/docs/index.html">Apache Log4j</a>
208
+ project, but is not a direct implementation or clone. Aside from superficial
209
+ similarities, the projects are not related in any way and the code base is
210
+ completely distinct. Log4r was developed without even looking at the
211
+ Apache Log4j code.
212
+ <p/>
213
+ Log4r is an Open Source project and intends to remain that way. The Log4r
214
+ license is similar to the Ruby Language license. It resides on
215
+ <p/>
216
+ While Log4r is interpreted, it attempts to achieve optimal performance and
217
+ scale well. Already, plans are being made to write the performance-critical
218
+ components as a C extension to Ruby.
219
+ <p/>
220
+ Log4r was inspired by and provides much of the features of the
221
+ <a href="http://jakarta.apache.org/log4j/docs/index.html">Apache Log4j</a>
222
+ project, but is not a direct implementation or clone. Aside from superficial
223
+ similarities, the projects are not related in any way and the code base is
224
+ completely distinct. Log4r was developed without even looking at the
225
+ Apache Log4j code.
226
+ <p/>
227
+ Log4r is an Open Source project and intends to remain that way. The Log4r
228
+ license is similar to the Ruby Language license. It resides on
229
+ <a href="license.html">this page</a> and in the distribution in a file
230
+
231
+ <p><hr noshade color="#AA0000">
232
+ <a name="outofbox">
233
+ <h4 ><a href="#toc">Out of the Box</a></h4>
234
+
235
+ Here's an example of how to use Log4r right away.
236
+ <div class="example">
237
+ <pre class="box">require 'log4r'
238
+ include Log4r
239
+
240
+ # create a logger named 'mylog' that logs to stdout
241
+ mylog = Logger.new 'mylog'
242
+ mylog.outputters = Outputter.stdout
243
+
244
+ # Now we can log.
245
+ def do_log(log)
246
+ log.debug "This is a message with level DEBUG"
247
+ log.info "This is a message with level INFO"
248
+ log.warn "This is a message with level WARN"
249
+ log.error "This is a message with level ERROR"
250
+ log.fatal "This is a message with level FATAL"
251
+ end
252
+ do_log(mylog)
253
+ </pre>
254
+ </div>
255
+
256
+ The output will look something like this:
257
+
258
+ <div class="example">
259
+ <pre class="box">DEBUG mylog: This is a message with level DEBUG
260
+ INFO mylog: This is a message with level INFO
261
+ WARN mylog: This is a message with level WARN
262
+ ERROR mylog: This is a message with level ERROR
263
+ FATAL mylog: This is a message with level FATAL</pre>
264
+ </div>
265
+
266
+ For ease of access, the logger is stored in a hashtable keyed to its name:
267
+
268
+ <div class="example">
269
+ <pre class="box">mylog = Logger['mylog'] # Get our logger back</pre>
270
+ </div>
271
+
272
+ Suppose we want to turn off <tt>DEBUG</tt>, <tt>INFO</tt>
273
+ and <tt>WARN</tt> messages and see only <tt>ERROR</tt> and <tt>FATAL</tt>.
274
+ To do this, we set the level threshold for mylog to <tt>ERROR</tt>:
275
+
276
+ <div class="example">
277
+ <pre class="box">mylog.level = ERROR</pre>
278
+ </div>
279
+
280
+ Running <tt>do_log(mylog)</tt> yields:
281
+
282
+ <div class="example">
283
+ <pre class="box">ERROR mylog: This is a message with level ERROR
284
+ FATAL mylog: This is a message with level FATAL</pre>
285
+ </div>
286
+
287
+ <p><hr noshade color="#AA0000">
288
+ <a name="overview">
289
+ <h4 ><a href="#toc">Overview</a></h4>
290
+
291
+ We will now go over the components of Log4r. A summary of each is provided,
292
+ and links to the
293
+ <a href="rdoc/index.html">Log4r RDoc API</a> are provided for further perusal.
294
+
295
+ <p><hr noshade color="#AA0000">
296
+ <a name="levels">
297
+ <h4 ><a href="#toc">Levels</a></h4>
298
+
299
+ Log4r uses a heiarchial system of logging. That is, certain log events
300
+ can have a higher priority than other log events. Hence, one can control
301
+ how much information one wants to log by adjusting the <b>level threshold</b>
302
+ of logging. By default, the logging levels and priorities are:
303
+
304
+ <div class="example">
305
+ <pre class="box">DEBUG &lt; INFO &lt; WARN &lt; ERROR &lt; FATAL</pre>
306
+ </div>
307
+ In the previous section, we saw how setting the level to <tt>ERROR</tt>
308
+ prevented messages with levels <tt>DEBUG</tt>, <tt>INFO</tt> and <tt>WARN</tt>
309
+ from showing up. The names and numbers of these levels are configurable.
310
+ You can have any number of levels and name them whatever you wish. The
311
+ logging methods we saw in the last section will be named after the custom
312
+ levels. Log4r adjusts itself to suit your needs.
313
+ <p/>
314
+
315
+ To find out more about levels, please see
316
+ <a href="rdoc/files/log4r_rb.html">rdoc/files/log4r_rb.html</a>.
317
+
318
+ <p><hr noshade color="#AA0000">
319
+ <a name="loggers">
320
+ <h4 ><a href="#toc">Loggers</a></h4>
321
+ The principle interface in Log4r is a Logger. Loggers have one logging method
322
+ for each level and any number of output destinations. A logger's level
323
+ threshold and output destinations may be changed dynamically. Loggers are
324
+ stored within a Repository for retrieval at any time. Loggers provide
325
+ all kinds of data for logging: the log message itself, the line number and
326
+ file it was called in, a timestamp, the log priority, and so on.
327
+ <p/>
328
+ Loggers can inherit other Loggers. Inheritance means that a Logger initially
329
+ adopts the characteristics of its parent if none are specified. A Logger's
330
+ level is inherited once, and a Logger will write to its parents output
331
+ destinations as well as its own. This behavior is optional, but allows one
332
+ to structure a powerful, and easily configurable logging system.
333
+ <p/>
334
+ To find out more about loggers, please see
335
+ <a href="rdoc/files/log4r/logger_rb.html">rdoc/files/log4r/logger_rb.html</a>.
336
+ <p><hr noshade color="#AA0000">
337
+ <a name="outputters">
338
+ <h4 ><a href="#toc">Outputters</a></h4>
339
+
340
+ An output destination (file, raw IO, stdout, etc.) is represented by an
341
+ Outputter object. An Outputter has a
342
+ particular means of formatting data (Formatter) and has a level threshold
343
+ of its own. Outputters, like Loggers, are stored in a repository and can be
344
+ retrieved and manipulated at any time. Every outputter is thread-safe, meaning
345
+ that multiple threads can log to the same Outputter without worrying about
346
+ race conditions.
347
+ <p/>
348
+ There is a growing collection of outputters provided: raw IO, to stdout,
349
+ to stderr, to files (including one that splits and zips up logs periodically),
350
+ to syslog and to an email address. If a specialized Outputter is needed, one
351
+ can be created from scratch in almost no time, thanks to the ease of
352
+ extending log4r outputters, the well documented code and the open source
353
+ license.
354
+ <p/>
355
+ To find out more about outputters, please see
356
+ <a href="rdoc/files/log4r/outputter/outputter_rb.html">
357
+ rdoc/files/log4r/outputter/outputter_rb.html</a>.
358
+ <p><hr noshade color="#AA0000">
359
+ <a name="formatters">
360
+ <h4 ><a href="#toc">Formatters</a></h4>
361
+ A Formatter is responsible for rendering a log message into an output format.
362
+ Several Formatters are provided, including the powerful PatternFormatter.
363
+ PatternFormatter uses sprintf-like directives to format log messages and
364
+ eliminates the need for custom Formatters.
365
+ <p/>
366
+ To find out more about formatters, please see
367
+ <a href="rdoc/files/log4r/formatter/formatter_rb.html">
368
+ rdoc/files/log4r/formatter/formatter_rb.html</a>.
369
+ <br/>
370
+ To find out more about PatternFormatter, please see
371
+ <a href="rdoc/files/log4r/formatter/patternformatter_rb.html">
372
+ rdoc/files/log4r/formatter/patternformatter_rb.html</a>.
373
+ <p><hr noshade color="#AA0000">
374
+ <a name="config">
375
+ <h4 ><a href="#toc">Configuration</a></h4>
376
+ Configuring Log4r is accomplished via the Configurator and YamlConfigurator
377
+ classes. They allow one to set custom levels and load up XML or YAML
378
+ configurations. The XML and YAML grammar used by Log4r is extremely flexible
379
+ and can accomodate the configuration of custom Outputters and Formatters with
380
+ no extra work. That is, if a custom Outputter is created, it can immedieately
381
+ be configured without needing to write extra code. This is acomplished by
382
+ taking advantage of Ruby's powerful reflection capabilities.
383
+ <p/>
384
+ To find out more about configuration, please see
385
+ <a href="rdoc/files/log4r/configurator_rb.html">rdoc/files/log4r/configurator_rb.html</a>.
386
+ <br/>
387
+ For YAML configuration, also see
388
+ <a href="rdoc/files/log4r/yamlconfigurator_rb.html">rdoc/files/log4r/yamlconfigurator.html</a>
389
+
390
+ <p><hr noshade color="#AA0000">
391
+ <a name="remote">
392
+ <h4 ><a href="#toc">Remote Logging</a></h4>
393
+
394
+ It is possible to send log events from an Outputter to a Logger over a network.
395
+ This is accomplished using the distributed Ruby library ROMP, a subclass of
396
+ Logger called LogServer, and a RemoteOutputter.
397
+ <p/>
398
+ To find out more about remote logging, please see
399
+ <a href="rdoc/files/log4r/logserver_rb.html">
400
+ rdoc/files/log4r/logserver_rb.html</a>
401
+ <p/>
402
+ Alternatively, one can just send log reports via email using EmailOutputter.
403
+ <p/>
404
+ To find out more about EmailOutputter, please see
405
+ <a href="rdoc/classes/Log4r/EmailOutputter.html">
406
+ rdoc/classes/Log4r/EmailOutputter.html</a>
407
+
408
+ <p><hr noshade color="#AA0000">
409
+ <a name="art">
410
+ <h4 ><a href="#toc">The Art of Logging</a></h4>
411
+
412
+ Log4r in itself does not automatically enable people to understand logging,
413
+ however it does provide tools to assist in <i>The Art of Logging</i>. We will
414
+ now cover some of the techniques in this art and how to use Log4r to
415
+ accomplish them.
416
+
417
+ <p><hr noshade color="#AA0000">
418
+ <a name="avoid">
419
+ <h4 ><a href="#toc">Avoiding Parameter Evaluation</a></h4>
420
+
421
+ Suppose we have a complex structure and don't have the time to
422
+ make a special <tt>to_s</tt> method. When we want to log the contents
423
+ of the object, we end up doing something like this:
424
+
425
+ <div class="example">
426
+ <pre class="box">log.debug( myobj.collect{|e| e.collect{|p| p.to_s}} )</pre>
427
+ </div>
428
+
429
+ It is expensive to do this because every time the debug method is called,
430
+ the parameters passed to it will be evaluated. Because this is a feature of
431
+ Ruby, setting the logger to <tt>OFF</tt> will not prevent the evaluation.
432
+ There are two ways to get around parameter evaluation. The first is to
433
+ perform a simple if condition:
434
+
435
+ <div class="example">
436
+ <pre class="box">if log.debug?
437
+ log.debug( myobj.collect{|e| e.collect{|p| p.to_s}} )
438
+ end</pre></div>
439
+ </div>
440
+
441
+ Here we are introduced to <tt>log.debug?</tt>, which is called a
442
+ <i>query method</i>. It returns true if <tt>DEBUG</tt> messages are being
443
+ logged, otherwise it returns false. Query methods are very cheap
444
+ to invoke and are a great way to encapsulate complext logging statements.
445
+ The query methods, like the logging ones, are named after the levels, but with
446
+ a question mark at the end. As another example, <tt>log.info?</tt> will find
447
+ out if <tt>INFO</tt> is being logged and so on.
448
+ <p/>
449
+ The second way around parameter evaluation is to pass a block to the
450
+ logging method:
451
+
452
+ <div class="example">
453
+ <pre class="box">log.debug { myobj.collect{|e| e.collect{|p| p.to_s} }</pre>
454
+ </div>
455
+
456
+ The block will be evaluated if and only if the logger is capable of handling
457
+ <tt>DEBUG</tt> log events.
458
+
459
+ <p><hr noshade color="#AA0000">
460
+ <a name="howmany">
461
+ <h4 ><a href="#toc">How Many?</a></h4>
462
+ How many loggers should one have? Only experience can tell, but
463
+ a general rule of thumb is to create one static logger per class and
464
+ one per service or state.
465
+ <p/>
466
+ When dealing with a large number of loggers, logger
467
+ inheritance and additivity can help organize what gets logged and to where.
468
+ <p/>
469
+ The configuration possibilities in Log4r are uncountable and can sometimes
470
+ be daunting. It's best to start with something simple and evolve it over time.
471
+ To assist in this task, Log4r can be set up using XML or YAML configuration
472
+ files.
473
+ <p><hr noshade color="#AA0000">
474
+ <a name="whereto">
475
+ <h4 ><a href="#toc">Where To?</a></h4>
476
+ Log4r lets one associate any number of Outputters to a Logger. Logger
477
+ additivity enables propagation of a log event upwards in the logger heiarchy.
478
+ The outputters themselves can have their own level thresholds. Unlike normal
479
+ loggers, Outputters can log at certain specific log levels. this allows
480
+ one to channel particular data to a particular output. All things considered,
481
+ log4r offers tremendous flexibility in deciding what gets logged where.
482
+
483
+ <p><hr noshade color="#AA0000">
484
+ <a name="tracing">
485
+ <h4 ><a href="#toc">Where From?</a></h4>
486
+
487
+ Want to find out where a particular log statement came from? Loggers have
488
+ tracers which record the call stack when turned on:
489
+
490
+ <div class="example">
491
+ <pre class="box">Logger['mylog'].trace = true</pre>
492
+ </div>
493
+
494
+ The trace is then accesible by a Formatter.
495
+
496
+ <p><hr noshade color="#AA0000">
497
+ <a name="who">
498
+ <h4 ><a href="#toc">Who's Talking?</a></h4>
499
+
500
+ If there are many loggers that use logger inheritance,
501
+ it's occasionally a good idea to show the full ancestry of a logger in the log
502
+ statement. Here's how to set up PatternFormatter to show the full ancestry
503
+ of a logger in a logging statement (in XML):
504
+
505
+ <div class="example">
506
+ <pre class="box">&lt;formatter type="PatternFormatter"&gt;
507
+ &lt;!-- %C shows full ancestry --&gt;
508
+ &lt;pattern&gt;[%l %C] %m&lt;/pattern&gt;
509
+ &lt;/formatter&gt;</pre>
510
+ </div>
511
+
512
+ For a logger named 'me' with ancestors 'cain::grandpa::pa', it will produce:
513
+
514
+ <div class="example">
515
+ <pre class="box">[DEBUG cain::grandpa::pa::me] Log message</pre>
516
+ </div>
517
+
518
+ <p><hr noshade color="#AA0000">
519
+ <a name="nullobj">
520
+ <h4 ><a href="#toc">The Null Logger</a></h4>
521
+ In addition to being the parent of all loggers, Logger.root is a null
522
+ object. That means that it does absolutely nothing when its log methods are
523
+ invoked. Its query methods always return false and it has no outputters.
524
+ It is useful to turn loggers off from within code:
525
+
526
+ <div class="example">
527
+ <pre class="box">noisylog = Logger.root
528
+ noisy.debug "This won't do anything"</pre>
529
+ </div>
530
+
531
+ <p><hr noshade color="#AA0000">
532
+ <a name="gotchas">
533
+ <h4 ><a href="#toc">Gotchas</a></h4>
534
+
535
+ If you are using Log4r, there are a few gotchas that you should be aware of:
536
+
537
+ <ul>
538
+ <li>Logger levels can be dynamically redefined, but the change won't be
539
+ noticed by any children. That is, if you set <code>root.level=OFF</code>
540
+ <i>after</i> defining some loggers, none of the loggers will change their level
541
+ to <code>OFF</code>. There is a good reason for this behavior.
542
+ </li>
543
+ <li>Dynamically redefining levels, tracing or additivity is expensive. It's
544
+ best to set up all your loggers in a config script and avoid making dynamic
545
+ changes to Log4r objects. The dynamism is most useful for debugging and
546
+ development, where local control of logging is a great convenience.
547
+ </li>
548
+ <li>When an <code>IOOutputter</code>'s <code>IO</code> is closed,
549
+ the <code>IOOutputter</code> changes its level to <code>OFF</code>
550
+ </li>
551
+ </ul>
552
+
553
+ <p><hr noshade color="#AA0000">
554
+ <a name="performance">
555
+ <h4 ><a href="#toc">Performance</a></h4>
556
+
557
+ Profiling has revealed that log4r is typically an order of magnitude or
558
+ two slower than log4j. However, this is still damn fast! In particular,
559
+ if a logger is set to <code>OFF</code>, the overhead of checking to
560
+ see if a log event should be logged nearly vanishes. This was accomplished by
561
+ dynamically redefining the unloggable logging methods to do nothing.
562
+ <p/>
563
+ In the future, Log4r's performance critical features will be written as a C
564
+ extension to Ruby. It will still be optional, but it will be available for
565
+ those who absolutely need to squeeze every last ounce of performance out of
566
+ Log4r. (No longer in the works, unfortunately.)
567
+ <p><hr noshade color="#AA0000">
568
+ <a name="project">
569
+ <h4 ><a href="#toc">The Project Itself</a></h4>
570
+ Log4r was initially developed by one person and is slowly but surely gaining
571
+ popularity and new developers. Please refer to the
572
+ <a href="contact.html">contact</a> page for more information on the
573
+ developers.
574
+
575
+ </td></tr>
576
+
577
+
578
+ </table>
579
+ </center>
580
+ </td>
581
+
582
+
583
+ </tr>
584
+ </table>
585
+ <hr noshade>
586
+ <div align="right">
587
+ <font color="#888888" size="-1">
588
+ <i>
589
+ $Id: manual.html,v 1.14 2004/03/17 21:07:14 fando Exp $
590
+ </i></font>
591
+ </div>
592
+ </body>
593
+ </html>