0
@@ -11,204 +11,205 @@ class Merb::Logger < Extlib::Logger
0
# require "time" # httpdate
0
-# # ==== Public Merb Logger API
0
-# # To replace an existing logger with a new one:
0
-# # Merb::Logger.set_log(log{String, IO},level{Symbol, String})
0
-# # Available logging levels are
0
-# # Merb::Logger::{ Fatal, Error, Warn, Info, Debug }
0
-# # Merb.logger.fatal(message<String>,&block)
0
-# # Merb.logger.error(message<String>,&block)
0
-# # Merb.logger.warn(message<String>,&block)
0
-# # Merb.logger.info(message<String>,&block)
0
-# # Merb.logger.debug(message<String>,&block)
0
-# # Logging with autoflush:
0
-# # Merb.logger.fatal!(message<String>,&block)
0
-# # Merb.logger.error!(message<String>,&block)
0
-# # Merb.logger.warn!(message<String>,&block)
0
-# # Merb.logger.info!(message<String>,&block)
0
-# # Merb.logger.debug!(message<String>,&block)
0
-# # Flush the buffer to
0
-# # Remove the current log object
0
-# # ==== Private Merb Logger API
0
-# # To initialize the logger you create a new object, proxies to set_log.
0
-# # Merb::Logger.new(log{String, IO},level{Symbol, String})
0
-# attr_accessor :logger
0
-# attr_accessor :delimiter
0
-# attr_accessor :auto_flush
0
-# attr_reader :init_args
0
-# # Ruby (standard) logger levels:
0
-# # :fatal:: An unhandleable error that results in a program crash
0
-# # :error:: A handleable error condition
0
-# # :info:: generic (useful) information about system operation
0
-# # :debug:: low-level information for developers
0
-# } unless const_defined?(:Levels)
0
-# # Readies a log for writing.
0
-# # log<IO, String>:: Either an IO object or a name of a logfile.
0
-# def initialize_log(log)
0
-# close if @log # be sure that we don't leave open files laying around.
0
-# if log.respond_to?(:write)
0
-# elsif File.exist?(log)
0
-# @log = open(log, (File::WRONLY | File::APPEND))
0
-# FileUtils.mkdir_p(File.dirname(log)) unless File.directory?(File.dirname(log))
0
-# @log = open(log, (File::WRONLY | File::APPEND | File::CREAT))
0
-# @log.write("#{Time.now.httpdate} #{delimiter} info #{delimiter} Logfile created\n")
0
-# # To initialize the logger you create a new object, proxies to set_log.
0
-# # *args:: Arguments to create the log from. See set_logs for specifics.
0
-# def initialize(*args)
0
-# # Replaces an existing logger with a new one.
0
-# # log<IO, String>:: Either an IO object or a name of a logfile.
0
-# # log_level<~to_sym>::
0
-# # The log level from, e.g. :fatal or :info. Defaults to :error in the
0
-# # production environment and :debug otherwise.
0
-# # delimiter<String>::
0
-# # Delimiter to use between message sections. Defaults to " ~ ".
0
-# # auto_flush<Boolean>::
0
-# # Whether the log should automatically flush after new messages are
0
-# # added. Defaults to false.
0
-# def set_log(log, log_level = nil, delimiter = " ~ ", auto_flush = false)
0
-# if log_level && Levels[log_level.to_sym]
0
-# @level = Levels[log_level.to_sym]
0
-# elsif Merb.environment == "production"
0
-# @level = Levels[:warn]
0
-# @level = Levels[:debug]
0
-# @delimiter = delimiter
0
-# @auto_flush = auto_flush
0
-# # Flush the entire buffer to the log object.
0
-# return unless @buffer.size > 0
0
-# @log.write(@buffer.slice!(0..-1).to_s)
0
-# # Close and remove the current log object.
0
-# @log.close if @log.respond_to?(:close) && !@log.tty?
0
-# # Appends a message to the log. The methods yield to an optional block and
0
-# # the output of this block will be appended to the message.
0
-# # string<String>:: The message to be logged. Defaults to nil.
0
-# # String:: The resulting message added to the log file.
0
-# message << string if string
0
-# message << "\n" unless message[-1] == ?\n
0
-# # Generate the logging methods for Merb.logger for each log level.
0
-# Levels.each_pair do |name, number|
0
-# class_eval <<-LEVELMETHODS, __FILE__, __LINE__
0
-# # Appends a message to the log if the log level is at least as high as
0
-# # the log level of the logger.
0
-# # string<String>:: The message to be logged. Defaults to nil.
0
-# # self:: The logger object for chaining.
0
-# def #{name}(message = nil)
0
-# self << message if #{number} >= level
0
-# # Appends a message to the log if the log level is at least as high as
0
-# # the log level of the logger. The bang! version of the method also auto
0
-# # flushes the log buffer to disk.
0
-# # string<String>:: The message to be logged. Defaults to nil.
0
-# # self:: The logger object for chaining.
0
-# def #{name}!(message = nil)
0
-# self << message if #{number} >= level
0
-# flush if #{number} >= level
0
-# # Boolean:: True if this level will be logged by this logger.
0
+# ==== Public Merb Logger API
0
+# To replace an existing logger with a new one:
0
+# Merb::Logger.set_log(log{String, IO},level{Symbol, String})
0
+# Available logging levels are
0
+# Merb::Logger::{ Fatal, Error, Warn, Info, Debug }
0
+# Merb.logger.fatal(message<String>,&block)
0
+# Merb.logger.error(message<String>,&block)
0
+# Merb.logger.warn(message<String>,&block)
0
+# Merb.logger.info(message<String>,&block)
0
+# Merb.logger.debug(message<String>,&block)
0
+# Logging with autoflush:
0
+# Merb.logger.fatal!(message<String>,&block)
0
+# Merb.logger.error!(message<String>,&block)
0
+# Merb.logger.warn!(message<String>,&block)
0
+# Merb.logger.info!(message<String>,&block)
0
+# Merb.logger.debug!(message<String>,&block)
0
+# Remove the current log object
0
+# ==== Private Merb Logger API
0
+# To initialize the logger you create a new object, proxies to set_log.
0
+# Merb::Logger.new(log{String, IO},level{Symbol, String})
0
+ attr_accessor :delimiter
0
+ attr_accessor :auto_flush
0
+ attr_reader :init_args
0
+ # Ruby (standard) logger levels:
0
+ # :fatal:: An unhandleable error that results in a program crash
0
+ # :error:: A handleable error condition
0
+ # :info:: generic (useful) information about system operation
0
+ # :debug:: low-level information for developers
0
+ } unless const_defined?(:Levels)
0
+ # Readies a log for writing.
0
+ # log<IO, String>:: Either an IO object or a name of a logfile.
0
+ def initialize_log(log)
0
+ close if @log # be sure that we don't leave open files laying around.
0
+ if log.respond_to?(:write)
0
+ elsif File.exist?(log)
0
+ @log = open(log, (File::WRONLY | File::APPEND))
0
+ FileUtils.mkdir_p(File.dirname(log)) unless File.directory?(File.dirname(log))
0
+ @log = open(log, (File::WRONLY | File::APPEND | File::CREAT))
0
+ @log.write("#{Time.now.httpdate} #{delimiter} info #{delimiter} Logfile created\n")
0
+ # To initialize the logger you create a new object, proxies to set_log.
0
+ # *args:: Arguments to create the log from. See set_logs for specifics.
0
+ # Replaces an existing logger with a new one.
0
+ # log<IO, String>:: Either an IO object or a name of a logfile.
0
+ # log_level<~to_sym>::
0
+ # The log level from, e.g. :fatal or :info. Defaults to :error in the
0
+ # production environment and :debug otherwise.
0
+ # Delimiter to use between message sections. Defaults to " ~ ".
0
+ # auto_flush<Boolean>::
0
+ # Whether the log should automatically flush after new messages are
0
+ # added. Defaults to false.
0
+ def set_log(stream = Merb::Config[:log_stream],
0
+ log_level = Merb::Config[:log_level],
0
+ delimiter = Merb::Config[:log_delimiter],
0
+ auto_flush = Merb::Config[:log_auto_flush])
0
+ @delimiter = delimiter
0
+ @auto_flush = auto_flush
0
+ @level = Levels[log_level]
0
+ @mutex = (@@mutex[@log] ||= Mutex.new)
0
+ # Flush the entire buffer to the log object.
0
+ return unless @buffer.size > 0
0
+ @log.write(@buffer.slice!(0..-1).to_s)
0
+ # Close and remove the current log object.
0
+ @log.close if @log.respond_to?(:close) && !@log.tty?
0
+ # Appends a message to the log. The methods yield to an optional block and
0
+ # the output of this block will be appended to the message.
0
+ # string<String>:: The message to be logged. Defaults to nil.
0
+ # String:: The resulting message added to the log file.
0
+ message << string if string
0
+ message << "\n" unless message[-1] == ?\n
0
+ # Generate the logging methods for Merb.logger for each log level.
0
+ Levels.each_pair do |name, number|
0
+ class_eval <<-LEVELMETHODS, __FILE__, __LINE__
0
+ # Appends a message to the log if the log level is at least as high as
0
+ # the log level of the logger.
0
+ # string<String>:: The message to be logged. Defaults to nil.
0
+ # self:: The logger object for chaining.
0
+ def #{name}(message = nil)
0
+ self << message if #{number} >= level
0
+ # Appends a message to the log if the log level is at least as high as
0
+ # the log level of the logger. The bang! version of the method also auto
0
+ # flushes the log buffer to disk.
0
+ # string<String>:: The message to be logged. Defaults to nil.
0
+ # self:: The logger object for chaining.
0
+ def #{name}!(message = nil)
0
+ self << message if #{number} >= level
0
+ flush if #{number} >= level
0
+ # Boolean:: True if this level will be logged by this logger.