Sha256: a4ca499ba87a66ddd7fd43389a080f7890828798c41bfa54aa82d5568ff54104

Contents?: true

Size: 1.25 KB

Versions: 3

Compression:

Stored size: 1.25 KB

Contents

require 'log4r'

class Object

    def while_logging_to( dir, fname, &block )
        if logdir = BuildTool::Application::instance.log_directory
            dirname = "#{logdir}/#{dir}"
            FileUtils.mkdir_p( dirname )
            with_warnings_suppressed do
                $log.add( FileOutputter.new( fname, :filename => "#{dirname}/#{fname}", :level => DEBUG ) )
                Outputter[fname].formatter = BuildTool::CmdFormatter.new
            end
        end

        begin
            yield
        rescue Exception => e
            $log.info("More information in #{dirname}/#{fname}")
            raise e
        ensure
            if logdir
                with_warnings_suppressed do
                    $log.remove( fname )
                end
            end
        end
    end

end

module BuildTool

    class PlainFormatter < Log4r::Formatter
        def format(event)
          sprintf("%s\n", event.data)
        end
    end

    class CmdFormatter < Log4r::Formatter
        def format(event)
            if event.level != CMDOUT
                sprintf("%*s %s> %s\n", MaxLevelLength, LNAMES[event.level], 
                      event.name, event.data)
            else
                sprintf("%s\n", event.data)
            end
        end
    end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
build-tool-0.0.3 lib/kde-build/tools/logging.rb
build-tool-0.0.1 lib/kde-build/tools/logging.rb
build-tool-0.0.2 lib/kde-build/tools/logging.rb