Changeset 714
- Timestamp:
- 10/03/07 21:01:31 (1 year ago)
- Files:
-
- trunk/lib/merb/logger.rb (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/lib/merb/logger.rb
r662 r714 1 1 module Merb 2 # Logging is called several times for each request, so keep it short and3 # sweet. Use << for atomic add to buffer, and slice! for atomic removal.4 2 5 3 class Logger … … 15 13 16 14 attr_accessor :level 17 attr_reader :buf 18 def initialize(log) 15 attr_reader :buffer 16 17 def initialize(log, level = DEBUG) 19 18 @level = level 20 @buf = ""19 @buffer = [] 21 20 if log.respond_to?(:write) 22 21 @log = log … … 32 31 33 32 def flush 34 return if @buf.size == 0 35 @log.write @buf.slice!(0..-1) 33 @log.write @buffer.slice!(0..-1).to_s unless @buffer.size == 0 36 34 end 37 35 38 36 def close 39 37 flush 40 @log.close if @log.respond_to? :close38 @log.close if @log.respond_to?(:close) 41 39 @log = nil 42 40 end 43 41 44 def debug(msg) 45 return if @level > DEBUG 46 msg << "\n" unless msg[-1] == ?\n 47 @buf << msg 42 def add(severity, message = nil, progname = nil, &block) 43 return if @level > severity 44 message = (message || (block && block.call) || progname).to_s 45 # If a newline is necessary then create a new message ending with a newline. 46 # Ensures that the original message is not mutated. 47 message = "#{message}\n" unless message[-1] == ?\n 48 @buffer << message 49 message 48 50 end 49 def info(msg) 50 return if @level > INFO 51 msg << "\n" unless msg[-1] == ?\n 52 @buf << msg 51 52 Severity.constants.each do |severity| 53 class_eval <<-EOT 54 def #{severity.downcase}(message = nil, progname = nil, &block) 55 add(#{severity}, message, progname, &block) 56 end 57 58 def #{severity.downcase}? 59 @level == #{severity} 60 end 61 EOT 53 62 end 54 def warn(msg) 55 return if @level > WARN 56 msg << "\n" unless msg[-1] == ?\n 57 @buf << msg 58 end 59 def error(msg) 60 return if @level > ERROR 61 msg << "\n" unless msg[-1] == ?\n 62 @buf << msg 63 end 64 def fatal(msg) 65 return if @level > FATAL 66 msg << "\n" unless msg[-1] == ?\n 67 @buf << msg 68 end 63 69 64 end 70 65 end
