Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Changeset 2459

Show
Ignore:
Timestamp:
10/04/05 19:47:23 (3 years ago)
Author:
minam
Message:

gauge: a bit of refactoring in preparation for a log reader

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • tools/gauge/lib/gauge/logger.rb

    r2447 r2459  
     1require 'gauge/sequential_log' 
     2 
    13module Gauge #:nodoc: 
    2   class Logger #:nodoc: 
     4  class Logger < SequentialLog #:nodoc: 
    35    DEFAULT_MAX_SIZE = 100 * 1024 * 1024 
    46 
    5     attr_reader :application 
    6     attr_reader :directory 
    7     attr_reader :number 
    87    attr_reader :max_size 
    9     attr_reader :name 
    108 
    119    def initialize(application, directory_or_io, options={}) 
    12       @application = application 
    13       @max_size    = options[:max_size] || DEFAULT_MAX_SIZE 
    14  
    15       if directory_or_io.respond_to?(:write) 
    16         @io = directory_or_io 
    17       else 
    18         setup_log_sequence_in(directory_or_io) 
    19       end 
     10      @max_size = options[:max_size] || DEFAULT_MAX_SIZE 
     11      super 
    2012    end 
    2113 
     
    2315      self.next! if number && size >= max_size 
    2416      @io.write(data) 
    25     end 
    26  
    27     def next! 
    28       if number.nil? 
    29         raise ArgumentError, "you cannot rotate a log created with an IO object" 
    30       else 
    31         @io.close 
    32         @number += 1 
    33         @io = open_log 
    34       end 
    3517    end 
    3618 
     
    4123    private 
    4224 
    43       def setup_log_sequence_in(directory) 
     25      def log_access_mode 
     26        "a" 
     27      end 
     28 
     29      def setup_log(directory) 
    4430        @directory = directory 
    4531        existing_logs = Dir["#{directory}/#{@application}-*.log"].sort 
     
    4834        @io = open_log 
    4935      end 
    50  
    51       def open_log 
    52         @name = "#{directory}/#{@application}-%04d.log" % number 
    53         log = File.open(name, "a") 
    54         log.sync = true 
    55         log 
    56       end 
    5736  end 
    5837end