riess 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- data/examples/Getting_started_example.rb +17 -0
- data/lib/actions.rb +53 -0
- data/lib/checks.rb +39 -0
- data/lib/exceptions.rb +12 -0
- data/lib/finders.rb +129 -0
- data/lib/helpers.rb +115 -0
- data/lib/html_action_modules.rb +88 -0
- data/lib/html_check_modules.rb +161 -0
- data/lib/html_object_factory.rb +33 -0
- data/lib/html_objects.rb +57 -0
- data/lib/ieparser_extension.rb +416 -0
- data/lib/key_codes.rb +123 -0
- data/lib/popup.rb +57 -0
- data/lib/riess.rb +111 -0
- data/lib/test_reporter.rb +113 -0
- data/riess_stable_testing_release_1-0.0.8.gemspec +22 -0
- data/vendor/log4r-1.0.5/doc/contact.html +166 -0
- data/vendor/log4r-1.0.5/doc/contribute.html +165 -0
- data/vendor/log4r-1.0.5/doc/images/crush/logo2.png +0 -0
- data/vendor/log4r-1.0.5/doc/images/log4r-logo.png +0 -0
- data/vendor/log4r-1.0.5/doc/images/logo2.png +0 -0
- data/vendor/log4r-1.0.5/doc/index.html +228 -0
- data/vendor/log4r-1.0.5/doc/license.html +200 -0
- data/vendor/log4r-1.0.5/doc/log4r.css +111 -0
- data/vendor/log4r-1.0.5/doc/manual.html +593 -0
- data/vendor/log4r-1.0.5/doc/rdoc/blank.html +2 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r.html +105 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/BasicFormatter.html +133 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/BasicFormatter.src/M000073.html +18 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/BasicFormatter.src/M000074.html +22 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/BasicFormatter.src/M000075.html +25 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/ConfigError.html +60 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Configurator.html +151 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Configurator.src/M000003.html +16 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Configurator.src/M000004.html +16 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Configurator.src/M000005.html +25 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Configurator.src/M000006.html +19 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Configurator.src/M000007.html +19 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/DateFileOutputter.html +84 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/DateFileOutputter.src/M000010.html +33 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/DefaultFormatter.html +62 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/EmailOutputter.html +123 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/EmailOutputter.src/M000047.html +32 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/EmailOutputter.src/M000048.html +19 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/FileOutputter.html +99 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/FileOutputter.src/M000011.html +45 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Formatter.html +91 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Formatter.src/M000076.html +17 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Formatter.src/M000077.html +17 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/IOOutputter.html +112 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/IOOutputter.src/M000049.html +19 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/IOOutputter.src/M000050.html +18 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/IOOutputter.src/M000051.html +21 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Log4rTools.html +116 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Log4rTools.src/M000032.html +21 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Log4rTools.src/M000033.html +18 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Log4rTools.src/M000034.html +24 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Log4rTools.src/M000035.html +18 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/LogEvent.html +132 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/LogEvent.src/M000001.html +19 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/LogServer.html +103 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/LogServer.src/M000044.html +22 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/LogServer.src/M000045.html +18 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Logger.html +341 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Logger.src/M000052.html +16 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Logger.src/M000053.html +16 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Logger.src/M000054.html +20 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Logger.src/M000055.html +22 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Logger.src/M000056.html +20 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Logger.src/M000057.html +18 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Logger.src/M000058.html +20 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Logger.src/M000059.html +30 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Logger.src/M000060.html +22 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Logger.src/M000061.html +21 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Logger.src/M000062.html +24 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Logger.src/M000063.html +18 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Logger.src/M000064.html +19 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Logger.src/M000065.html +29 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Logger.src/M000066.html +22 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Logger.src/M000067.html +16 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Logger.src/M000068.html +18 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/ObjectFormatter.html +85 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/ObjectFormatter.src/M000009.html +21 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Outputter.html +229 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Outputter.src/M000015.html +25 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Outputter.src/M000016.html +16 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Outputter.src/M000017.html +16 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Outputter.src/M000018.html +18 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Outputter.src/M000019.html +18 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Outputter.src/M000020.html +18 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Outputter.src/M000021.html +23 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Outputter.src/M000022.html +21 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Outputter.src/M000023.html +26 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Outputter.src/M000024.html +29 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/Outputter.src/M000025.html +17 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/PatternFormatter.html +120 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/PatternFormatter.src/M000046.html +23 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/RemoteOutputter.html +104 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/RemoteOutputter.src/M000012.html +22 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/RemoteOutputter.src/M000013.html +18 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/RemoteOutputter.src/M000014.html +18 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/RollingFileOutputter.html +111 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/RollingFileOutputter.src/M000069.html +45 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/RootLogger.html +173 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/RootLogger.src/M000036.html +23 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/RootLogger.src/M000037.html +16 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/RootLogger.src/M000038.html +16 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/RootLogger.src/M000039.html +16 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/RootLogger.src/M000040.html +16 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/RootLogger.src/M000041.html +16 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/RootLogger.src/M000042.html +16 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/RootLogger.src/M000043.html +16 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/SimpleFormatter.html +83 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/SimpleFormatter.src/M000026.html +19 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/StderrOutputter.html +76 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/StderrOutputter.src/M000002.html +18 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/StdoutOutputter.html +76 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/StdoutOutputter.src/M000008.html +18 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/SyslogOutputter.html +111 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/SyslogOutputter.src/M000070.html +22 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/SyslogOutputter.src/M000071.html +18 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/SyslogOutputter.src/M000072.html +21 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/YamlConfigurator.html +128 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/YamlConfigurator.src/M000027.html +16 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/YamlConfigurator.src/M000028.html +16 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/YamlConfigurator.src/M000029.html +25 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/YamlConfigurator.src/M000030.html +18 -0
- data/vendor/log4r-1.0.5/doc/rdoc/classes/Log4r/YamlConfigurator.src/M000031.html +18 -0
- data/vendor/log4r-1.0.5/doc/rdoc/created.rid +1 -0
- data/vendor/log4r-1.0.5/doc/rdoc/files/log4r/configurator_rb.html +402 -0
- data/vendor/log4r-1.0.5/doc/rdoc/files/log4r/formatter/formatter_rb.html +152 -0
- data/vendor/log4r-1.0.5/doc/rdoc/files/log4r/formatter/patternformatter_rb.html +266 -0
- data/vendor/log4r-1.0.5/doc/rdoc/files/log4r/logger_rb.html +320 -0
- data/vendor/log4r-1.0.5/doc/rdoc/files/log4r/logserver_rb.html +191 -0
- data/vendor/log4r-1.0.5/doc/rdoc/files/log4r/outputter/datefileoutputter_rb.html +120 -0
- data/vendor/log4r-1.0.5/doc/rdoc/files/log4r/outputter/emailoutputter_rb.html +205 -0
- data/vendor/log4r-1.0.5/doc/rdoc/files/log4r/outputter/outputter_rb.html +254 -0
- data/vendor/log4r-1.0.5/doc/rdoc/files/log4r/outputter/syslogoutputter_rb.html +135 -0
- data/vendor/log4r-1.0.5/doc/rdoc/files/log4r/yamlconfigurator_rb.html +120 -0
- data/vendor/log4r-1.0.5/doc/rdoc/files/log4r_rb.html +228 -0
- data/vendor/log4r-1.0.5/doc/rdoc/fr_class_index.html +59 -0
- data/vendor/log4r-1.0.5/doc/rdoc/fr_file_index.html +45 -0
- data/vendor/log4r-1.0.5/doc/rdoc/fr_method_index.html +111 -0
- data/vendor/log4r-1.0.5/doc/rdoc/index.html +26 -0
- data/vendor/log4r-1.0.5/doc/rdoc/rdoc-style.css +79 -0
- data/vendor/log4r-1.0.5/examples/README +19 -0
- data/vendor/log4r-1.0.5/examples/customlevels.rb +34 -0
- data/vendor/log4r-1.0.5/examples/fileroll.rb +40 -0
- data/vendor/log4r-1.0.5/examples/log4r_yaml.yaml +0 -0
- data/vendor/log4r-1.0.5/examples/logclient.rb +25 -0
- data/vendor/log4r-1.0.5/examples/logserver.rb +18 -0
- data/vendor/log4r-1.0.5/examples/moderate.xml +29 -0
- data/vendor/log4r-1.0.5/examples/moderateconfig.rb +66 -0
- data/vendor/log4r-1.0.5/examples/myformatter.rb +23 -0
- data/vendor/log4r-1.0.5/examples/outofthebox.rb +21 -0
- data/vendor/log4r-1.0.5/examples/rrconfig.xml +63 -0
- data/vendor/log4r-1.0.5/examples/rrsetup.rb +42 -0
- data/vendor/log4r-1.0.5/examples/simpleconfig.rb +39 -0
- data/vendor/log4r-1.0.5/examples/xmlconfig.rb +25 -0
- data/vendor/log4r-1.0.5/examples/yaml.rb +30 -0
- data/vendor/log4r-1.0.5/src/log4r.rb +20 -0
- data/vendor/log4r-1.0.5/src/log4r/base.rb +74 -0
- data/vendor/log4r-1.0.5/src/log4r/config.rb +9 -0
- data/vendor/log4r-1.0.5/src/log4r/configurator.rb +224 -0
- data/vendor/log4r-1.0.5/src/log4r/formatter/formatter.rb +105 -0
- data/vendor/log4r-1.0.5/src/log4r/formatter/patternformatter.rb +108 -0
- data/vendor/log4r-1.0.5/src/log4r/lib/drbloader.rb +52 -0
- data/vendor/log4r-1.0.5/src/log4r/lib/xmlloader.rb +24 -0
- data/vendor/log4r-1.0.5/src/log4r/logevent.rb +28 -0
- data/vendor/log4r-1.0.5/src/log4r/logger.rb +194 -0
- data/vendor/log4r-1.0.5/src/log4r/loggerfactory.rb +89 -0
- data/vendor/log4r-1.0.5/src/log4r/logserver.rb +28 -0
- data/vendor/log4r-1.0.5/src/log4r/outputter/consoleoutputters.rb +18 -0
- data/vendor/log4r-1.0.5/src/log4r/outputter/datefileoutputter.rb +110 -0
- data/vendor/log4r-1.0.5/src/log4r/outputter/emailoutputter.rb +115 -0
- data/vendor/log4r-1.0.5/src/log4r/outputter/fileoutputter.rb +49 -0
- data/vendor/log4r-1.0.5/src/log4r/outputter/iooutputter.rb +55 -0
- data/vendor/log4r-1.0.5/src/log4r/outputter/outputter.rb +132 -0
- data/vendor/log4r-1.0.5/src/log4r/outputter/outputterfactory.rb +59 -0
- data/vendor/log4r-1.0.5/src/log4r/outputter/remoteoutputter.rb +40 -0
- data/vendor/log4r-1.0.5/src/log4r/outputter/rollingfileoutputter.rb +126 -0
- data/vendor/log4r-1.0.5/src/log4r/outputter/staticoutputter.rb +30 -0
- data/vendor/log4r-1.0.5/src/log4r/outputter/syslogoutputter.rb +75 -0
- data/vendor/log4r-1.0.5/src/log4r/rdoc/configurator +243 -0
- data/vendor/log4r-1.0.5/src/log4r/rdoc/emailoutputter +103 -0
- data/vendor/log4r-1.0.5/src/log4r/rdoc/formatter +39 -0
- data/vendor/log4r-1.0.5/src/log4r/rdoc/log4r +89 -0
- data/vendor/log4r-1.0.5/src/log4r/rdoc/logger +175 -0
- data/vendor/log4r-1.0.5/src/log4r/rdoc/logserver +85 -0
- data/vendor/log4r-1.0.5/src/log4r/rdoc/outputter +108 -0
- data/vendor/log4r-1.0.5/src/log4r/rdoc/patternformatter +128 -0
- data/vendor/log4r-1.0.5/src/log4r/rdoc/syslogoutputter +29 -0
- data/vendor/log4r-1.0.5/src/log4r/rdoc/yamlconfigurator +20 -0
- data/vendor/log4r-1.0.5/src/log4r/repository.rb +65 -0
- data/vendor/log4r-1.0.5/src/log4r/staticlogger.rb +49 -0
- data/vendor/log4r-1.0.5/src/log4r/yamlconfigurator.rb +0 -0
- data/vendor/log4r-1.0.5/tests/include.rb +7 -0
- data/vendor/log4r-1.0.5/tests/runtest.rb +6 -0
- data/vendor/log4r-1.0.5/tests/testbase.rb +45 -0
- data/vendor/log4r-1.0.5/tests/testcustom.rb +33 -0
- data/vendor/log4r-1.0.5/tests/testdefault.rb +25 -0
- data/vendor/log4r-1.0.5/tests/testformatter.rb +29 -0
- data/vendor/log4r-1.0.5/tests/testlogger.rb +198 -0
- data/vendor/log4r-1.0.5/tests/testoutputter.rb +112 -0
- data/vendor/log4r-1.0.5/tests/testpatternformatter.rb +26 -0
- data/vendor/log4r-1.0.5/tests/testxmlconf.rb +51 -0
- data/vendor/log4r-1.0.5/tests/xml/testconf.xml +37 -0
- data/vendor/rspec-0.8.2/CHANGES +575 -0
- data/vendor/rspec-0.8.2/EXAMPLES.rd +81 -0
- data/vendor/rspec-0.8.2/MIT-LICENSE +20 -0
- data/vendor/rspec-0.8.2/README +57 -0
- data/vendor/rspec-0.8.2/RELEASE-PLAN +117 -0
- data/vendor/rspec-0.8.2/Rakefile +223 -0
- data/vendor/rspec-0.8.2/bin/spec +4 -0
- data/vendor/rspec-0.8.2/examples/auto_spec_name_generation_example.rb +18 -0
- data/vendor/rspec-0.8.2/examples/custom_expectation_matchers.rb +53 -0
- data/vendor/rspec-0.8.2/examples/custom_formatter.rb +11 -0
- data/vendor/rspec-0.8.2/examples/dynamic_spec.rb +9 -0
- data/vendor/rspec-0.8.2/examples/file_accessor.rb +18 -0
- data/vendor/rspec-0.8.2/examples/file_accessor_spec.rb +38 -0
- data/vendor/rspec-0.8.2/examples/greeter_spec.rb +30 -0
- data/vendor/rspec-0.8.2/examples/helper_method_example.rb +11 -0
- data/vendor/rspec-0.8.2/examples/io_processor.rb +8 -0
- data/vendor/rspec-0.8.2/examples/io_processor_spec.rb +21 -0
- data/vendor/rspec-0.8.2/examples/mocking_example.rb +27 -0
- data/vendor/rspec-0.8.2/examples/partial_mock_example.rb +28 -0
- data/vendor/rspec-0.8.2/examples/predicate_example.rb +27 -0
- data/vendor/rspec-0.8.2/examples/setup_teardown_example.rb +34 -0
- data/vendor/rspec-0.8.2/examples/spec_helper.rb +1 -0
- data/vendor/rspec-0.8.2/examples/stack.rb +36 -0
- data/vendor/rspec-0.8.2/examples/stack_spec.rb +113 -0
- data/vendor/rspec-0.8.2/examples/stubbing_example.rb +69 -0
- data/vendor/rspec-0.8.2/examples/test_case_spec.rb +63 -0
- data/vendor/rspec-0.8.2/lib/spec.rb +11 -0
- data/vendor/rspec-0.8.2/lib/spec/callback.rb +11 -0
- data/vendor/rspec-0.8.2/lib/spec/callback/callback_container.rb +60 -0
- data/vendor/rspec-0.8.2/lib/spec/callback/extensions/module.rb +24 -0
- data/vendor/rspec-0.8.2/lib/spec/callback/extensions/object.rb +37 -0
- data/vendor/rspec-0.8.2/lib/spec/deprecated.rb +3 -0
- data/vendor/rspec-0.8.2/lib/spec/expectations.rb +59 -0
- data/vendor/rspec-0.8.2/lib/spec/expectations/differs/default.rb +62 -0
- data/vendor/rspec-0.8.2/lib/spec/expectations/errors.rb +6 -0
- data/vendor/rspec-0.8.2/lib/spec/expectations/extensions.rb +3 -0
- data/vendor/rspec-0.8.2/lib/spec/expectations/extensions/object.rb +109 -0
- data/vendor/rspec-0.8.2/lib/spec/expectations/extensions/proc.rb +57 -0
- data/vendor/rspec-0.8.2/lib/spec/expectations/extensions/string_and_symbol.rb +17 -0
- data/vendor/rspec-0.8.2/lib/spec/expectations/handler.rb +47 -0
- data/vendor/rspec-0.8.2/lib/spec/expectations/should.rb +5 -0
- data/vendor/rspec-0.8.2/lib/spec/expectations/should/base.rb +64 -0
- data/vendor/rspec-0.8.2/lib/spec/expectations/should/change.rb +69 -0
- data/vendor/rspec-0.8.2/lib/spec/expectations/should/have.rb +128 -0
- data/vendor/rspec-0.8.2/lib/spec/expectations/should/not.rb +74 -0
- data/vendor/rspec-0.8.2/lib/spec/expectations/should/should.rb +81 -0
- data/vendor/rspec-0.8.2/lib/spec/expectations/sugar.rb +47 -0
- data/vendor/rspec-0.8.2/lib/spec/matchers.rb +160 -0
- data/vendor/rspec-0.8.2/lib/spec/matchers/be.rb +161 -0
- data/vendor/rspec-0.8.2/lib/spec/matchers/be_close.rb +37 -0
- data/vendor/rspec-0.8.2/lib/spec/matchers/change.rb +120 -0
- data/vendor/rspec-0.8.2/lib/spec/matchers/eql.rb +43 -0
- data/vendor/rspec-0.8.2/lib/spec/matchers/equal.rb +43 -0
- data/vendor/rspec-0.8.2/lib/spec/matchers/has.rb +44 -0
- data/vendor/rspec-0.8.2/lib/spec/matchers/have.rb +140 -0
- data/vendor/rspec-0.8.2/lib/spec/matchers/include.rb +50 -0
- data/vendor/rspec-0.8.2/lib/spec/matchers/match.rb +41 -0
- data/vendor/rspec-0.8.2/lib/spec/matchers/raise_error.rb +100 -0
- data/vendor/rspec-0.8.2/lib/spec/matchers/respond_to.rb +35 -0
- data/vendor/rspec-0.8.2/lib/spec/matchers/satisfy.rb +47 -0
- data/vendor/rspec-0.8.2/lib/spec/matchers/throw_symbol.rb +75 -0
- data/vendor/rspec-0.8.2/lib/spec/mocks.rb +232 -0
- data/vendor/rspec-0.8.2/lib/spec/mocks/argument_expectation.rb +132 -0
- data/vendor/rspec-0.8.2/lib/spec/mocks/error_generator.rb +85 -0
- data/vendor/rspec-0.8.2/lib/spec/mocks/errors.rb +10 -0
- data/vendor/rspec-0.8.2/lib/spec/mocks/extensions/object.rb +3 -0
- data/vendor/rspec-0.8.2/lib/spec/mocks/message_expectation.rb +231 -0
- data/vendor/rspec-0.8.2/lib/spec/mocks/methods.rb +40 -0
- data/vendor/rspec-0.8.2/lib/spec/mocks/mock.rb +26 -0
- data/vendor/rspec-0.8.2/lib/spec/mocks/mock_handler.rb +166 -0
- data/vendor/rspec-0.8.2/lib/spec/mocks/order_group.rb +29 -0
- data/vendor/rspec-0.8.2/lib/spec/rake/spectask.rb +173 -0
- data/vendor/rspec-0.8.2/lib/spec/rake/verify_rcov.rb +47 -0
- data/vendor/rspec-0.8.2/lib/spec/runner.rb +132 -0
- data/vendor/rspec-0.8.2/lib/spec/runner/backtrace_tweaker.rb +55 -0
- data/vendor/rspec-0.8.2/lib/spec/runner/command_line.rb +34 -0
- data/vendor/rspec-0.8.2/lib/spec/runner/context.rb +154 -0
- data/vendor/rspec-0.8.2/lib/spec/runner/context_eval.rb +142 -0
- data/vendor/rspec-0.8.2/lib/spec/runner/context_runner.rb +55 -0
- data/vendor/rspec-0.8.2/lib/spec/runner/drb_command_line.rb +21 -0
- data/vendor/rspec-0.8.2/lib/spec/runner/execution_context.rb +17 -0
- data/vendor/rspec-0.8.2/lib/spec/runner/extensions/kernel.rb +17 -0
- data/vendor/rspec-0.8.2/lib/spec/runner/extensions/object.rb +32 -0
- data/vendor/rspec-0.8.2/lib/spec/runner/formatter.rb +5 -0
- data/vendor/rspec-0.8.2/lib/spec/runner/formatter/base_text_formatter.rb +118 -0
- data/vendor/rspec-0.8.2/lib/spec/runner/formatter/html_formatter.rb +219 -0
- data/vendor/rspec-0.8.2/lib/spec/runner/formatter/progress_bar_formatter.rb +27 -0
- data/vendor/rspec-0.8.2/lib/spec/runner/formatter/rdoc_formatter.rb +22 -0
- data/vendor/rspec-0.8.2/lib/spec/runner/formatter/specdoc_formatter.rb +23 -0
- data/vendor/rspec-0.8.2/lib/spec/runner/heckle_runner.rb +71 -0
- data/vendor/rspec-0.8.2/lib/spec/runner/heckle_runner_win.rb +10 -0
- data/vendor/rspec-0.8.2/lib/spec/runner/option_parser.rb +224 -0
- data/vendor/rspec-0.8.2/lib/spec/runner/reporter.rb +105 -0
- data/vendor/rspec-0.8.2/lib/spec/runner/spec_matcher.rb +25 -0
- data/vendor/rspec-0.8.2/lib/spec/runner/spec_parser.rb +41 -0
- data/vendor/rspec-0.8.2/lib/spec/runner/spec_should_raise_handler.rb +74 -0
- data/vendor/rspec-0.8.2/lib/spec/runner/specification.rb +114 -0
- data/vendor/rspec-0.8.2/lib/spec/translator.rb +87 -0
- data/vendor/rspec-0.8.2/lib/spec/version.rb +30 -0
- data/vendor/rspec-0.8.2/spec/spec/callback/callback_container_spec.rb +27 -0
- data/vendor/rspec-0.8.2/spec/spec/callback/module_spec.rb +37 -0
- data/vendor/rspec-0.8.2/spec/spec/callback/object_spec.rb +90 -0
- data/vendor/rspec-0.8.2/spec/spec/callback/object_with_class_callback_spec.rb +19 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/differs/default_spec.rb +107 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/extensions/object_spec.rb +46 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/fail_with_spec.rb +71 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_==_spec.rb +19 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_=~_spec.rb +13 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_be_a_kind_of_spec.rb +21 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_be_an_instance_of_spec.rb +30 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_be_arbitrary_predicate_spec.rb +81 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_be_close_spec.rb +18 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_be_comparison_operator_spec.rb +44 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_be_false_spec.rb +39 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_be_spec.rb +11 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_be_true_spec.rb +27 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_change_spec.rb +184 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_eql_spec.rb +11 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_equal_spec.rb +11 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_have_at_least_spec.rb +53 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_have_at_most_spec.rb +45 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_have_key_spec.rb +21 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_have_spec.rb +64 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_include_spec.rb +59 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_match_spec.rb +25 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_not_==_spec.rb +15 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_not_be_a_kind_of_spec.rb +21 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_not_be_an_instance_of_spec.rb +11 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_not_be_arbitrary_predicate_spec.rb +68 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_not_be_spec.rb +11 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_not_change_spec.rb +24 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_not_eql_spec.rb +11 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_not_equal_spec.rb +11 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_not_have_key_spec.rb +15 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_not_include_spec.rb +58 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_not_match_spec.rb +11 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_not_raise_spec.rb +75 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_not_respond_to_spec.rb +15 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_not_throw_spec.rb +35 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_raise_spec.rb +66 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_respond_to_spec.rb +15 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_satisfy_spec.rb +35 -0
- data/vendor/rspec-0.8.2/spec/spec/expectations/should/should_throw_spec.rb +27 -0
- data/vendor/rspec-0.8.2/spec/spec/matchers/be_close_spec.rb +33 -0
- data/vendor/rspec-0.8.2/spec/spec/matchers/be_spec.rb +182 -0
- data/vendor/rspec-0.8.2/spec/spec/matchers/change_spec.rb +232 -0
- data/vendor/rspec-0.8.2/spec/spec/matchers/description_generation_spec.rb +147 -0
- data/vendor/rspec-0.8.2/spec/spec/matchers/eql_spec.rb +41 -0
- data/vendor/rspec-0.8.2/spec/spec/matchers/equal_spec.rb +41 -0
- data/vendor/rspec-0.8.2/spec/spec/matchers/handler_spec.rb +75 -0
- data/vendor/rspec-0.8.2/spec/spec/matchers/has_spec.rb +37 -0
- data/vendor/rspec-0.8.2/spec/spec/matchers/have_spec.rb +259 -0
- data/vendor/rspec-0.8.2/spec/spec/matchers/include_spec.rb +33 -0
- data/vendor/rspec-0.8.2/spec/spec/matchers/match_spec.rb +37 -0
- data/vendor/rspec-0.8.2/spec/spec/matchers/matcher_methods_spec.rb +85 -0
- data/vendor/rspec-0.8.2/spec/spec/matchers/raise_error_spec.rb +147 -0
- data/vendor/rspec-0.8.2/spec/spec/matchers/respond_to_spec.rb +30 -0
- data/vendor/rspec-0.8.2/spec/spec/matchers/satisfy_spec.rb +36 -0
- data/vendor/rspec-0.8.2/spec/spec/matchers/throw_symbol_spec.rb +59 -0
- data/vendor/rspec-0.8.2/spec/spec/mocks/any_number_of_times_spec.rb +34 -0
- data/vendor/rspec-0.8.2/spec/spec/mocks/argument_expectation_spec.rb +19 -0
- data/vendor/rspec-0.8.2/spec/spec/mocks/at_least_spec.rb +97 -0
- data/vendor/rspec-0.8.2/spec/spec/mocks/at_most_spec.rb +97 -0
- data/vendor/rspec-0.8.2/spec/spec/mocks/bug_report_7611_spec.rb +19 -0
- data/vendor/rspec-0.8.2/spec/spec/mocks/bug_report_7805_spec.rb +22 -0
- data/vendor/rspec-0.8.2/spec/spec/mocks/bug_report_8165_spec.rb +31 -0
- data/vendor/rspec-0.8.2/spec/spec/mocks/bug_report_8302_spec.rb +26 -0
- data/vendor/rspec-0.8.2/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +74 -0
- data/vendor/rspec-0.8.2/spec/spec/mocks/mock_ordering_spec.rb +80 -0
- data/vendor/rspec-0.8.2/spec/spec/mocks/mock_spec.rb +407 -0
- data/vendor/rspec-0.8.2/spec/spec/mocks/multiple_return_value_spec.rb +113 -0
- data/vendor/rspec-0.8.2/spec/spec/mocks/null_object_mock_spec.rb +40 -0
- data/vendor/rspec-0.8.2/spec/spec/mocks/once_counts_spec.rb +56 -0
- data/vendor/rspec-0.8.2/spec/spec/mocks/options_hash_spec.rb +31 -0
- data/vendor/rspec-0.8.2/spec/spec/mocks/partial_mock_spec.rb +52 -0
- data/vendor/rspec-0.8.2/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +64 -0
- data/vendor/rspec-0.8.2/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +92 -0
- data/vendor/rspec-0.8.2/spec/spec/mocks/precise_counts_spec.rb +56 -0
- data/vendor/rspec-0.8.2/spec/spec/mocks/record_messages_spec.rb +26 -0
- data/vendor/rspec-0.8.2/spec/spec/mocks/stub_spec.rb +159 -0
- data/vendor/rspec-0.8.2/spec/spec/mocks/twice_counts_spec.rb +67 -0
- data/vendor/rspec-0.8.2/spec/spec/runner/command_line_spec.rb +32 -0
- data/vendor/rspec-0.8.2/spec/spec/runner/context_matching_spec.rb +28 -0
- data/vendor/rspec-0.8.2/spec/spec/runner/context_runner_spec.rb +100 -0
- data/vendor/rspec-0.8.2/spec/spec/runner/context_spec.rb +405 -0
- data/vendor/rspec-0.8.2/spec/spec/runner/drb_command_line_spec.rb +74 -0
- data/vendor/rspec-0.8.2/spec/spec/runner/execution_context_spec.rb +52 -0
- data/vendor/rspec-0.8.2/spec/spec/runner/formatter/html_formatter_spec.rb +40 -0
- data/vendor/rspec-0.8.2/spec/spec/runner/formatter/progress_bar_formatter_dry_run_spec.rb +21 -0
- data/vendor/rspec-0.8.2/spec/spec/runner/formatter/progress_bar_formatter_failure_dump_spec.rb +36 -0
- data/vendor/rspec-0.8.2/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +78 -0
- data/vendor/rspec-0.8.2/spec/spec/runner/formatter/rdoc_formatter_dry_run_spec.rb +18 -0
- data/vendor/rspec-0.8.2/spec/spec/runner/formatter/rdoc_formatter_spec.rb +41 -0
- data/vendor/rspec-0.8.2/spec/spec/runner/formatter/specdoc_formatter_dry_run_spec.rb +21 -0
- data/vendor/rspec-0.8.2/spec/spec/runner/formatter/specdoc_formatter_spec.rb +46 -0
- data/vendor/rspec-0.8.2/spec/spec/runner/heckle_runner_spec.rb +63 -0
- data/vendor/rspec-0.8.2/spec/spec/runner/heckler_spec.rb +14 -0
- data/vendor/rspec-0.8.2/spec/spec/runner/kernel_ext_spec.rb +16 -0
- data/vendor/rspec-0.8.2/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +45 -0
- data/vendor/rspec-0.8.2/spec/spec/runner/object_ext_spec.rb +11 -0
- data/vendor/rspec-0.8.2/spec/spec/runner/option_parser_spec.rb +269 -0
- data/vendor/rspec-0.8.2/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +47 -0
- data/vendor/rspec-0.8.2/spec/spec/runner/reporter_spec.rb +126 -0
- data/vendor/rspec-0.8.2/spec/spec/runner/spec_matcher_spec.rb +107 -0
- data/vendor/rspec-0.8.2/spec/spec/runner/spec_name_generation_spec.rb +102 -0
- data/vendor/rspec-0.8.2/spec/spec/runner/spec_parser_spec.rb +37 -0
- data/vendor/rspec-0.8.2/spec/spec/runner/specification_class_spec.rb +72 -0
- data/vendor/rspec-0.8.2/spec/spec/runner/specification_instance_spec.rb +160 -0
- data/vendor/rspec-0.8.2/spec/spec/runner/specification_should_raise_spec.rb +136 -0
- data/vendor/rspec-0.8.2/spec/spec/spec_classes.rb +102 -0
- data/vendor/rspec-0.8.2/spec/spec/translator_spec.rb +79 -0
- data/vendor/rspec-0.8.2/spec/spec_helper.rb +35 -0
- 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"> </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> </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"> </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> </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"> </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> </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"> </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"> </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"> </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 < INFO < WARN < ERROR < 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"><formatter type="PatternFormatter">
|
507
|
+
<!-- %C shows full ancestry -->
|
508
|
+
<pattern>[%l %C] %m</pattern>
|
509
|
+
</formatter></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>
|