about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorwayneeseguin <wayneeseguin@19e92222-5c0b-0410-8929-a290d50e31e9>2007-12-16 21:42:53 +0000
committerwayneeseguin <wayneeseguin@19e92222-5c0b-0410-8929-a290d50e31e9>2007-12-16 21:42:53 +0000
commite74d69786c99c8a17d8365e06cffb622b864f329 (patch)
tree1cc4e89f72696404f13329abe8e82bd160830dce
parent28dfa968049c714ba53fefc46100d13e6674c55e (diff)
downloadunicorn-e74d69786c99c8a17d8365e06cffb622b864f329.tar.gz
git-svn-id: svn+ssh://rubyforge.org/var/svn/mongrel/trunk@916 19e92222-5c0b-0410-8929-a290d50e31e9
-rw-r--r--bin/mongrel_rails40
-rw-r--r--examples/builder.rb6
-rw-r--r--ext/http11/http11.c2
-rw-r--r--lib/mongrel.rb32
-rw-r--r--lib/mongrel/command.rb12
-rw-r--r--lib/mongrel/configurator.rb30
-rw-r--r--lib/mongrel/debug.rb2
-rw-r--r--lib/mongrel/logger.rb17
-rw-r--r--lib/mongrel/rails.rb8
-rw-r--r--projects/mongrel_cluster/lib/mongrel_cluster/init.rb30
-rw-r--r--site/src/docs/howto.page2
11 files changed, 92 insertions, 89 deletions
diff --git a/bin/mongrel_rails b/bin/mongrel_rails
index 9283590..ad5adf6 100644
--- a/bin/mongrel_rails
+++ b/bin/mongrel_rails
@@ -75,49 +75,49 @@ module Mongrel
     def run
       if @generate
         @generate = File.expand_path(@generate)
-        log(:error, "** Writing config to \"#@generate\".")
+        Mongrel.log(:error, "** Writing config to \"#@generate\".")
         open(@generate, "w") {|f| f.write(settings.to_yaml) }
-        log(:error, "** Finished.  Run \"mongrel_rails start -C #@generate\" to use the config file.")
+        Mongrel.log(:error, "** Finished.  Run \"mongrel_rails start -C #@generate\" to use the config file.")
         exit 0
       end
 
       config = Mongrel::Rails::RailsConfigurator.new(settings) do
         if defaults[:daemon]
           if File.exist? defaults[:pid_file]
-            log "!!! PID file #{defaults[:pid_file]} already exists.  Mongrel could be running already.  Check your #{defaults[:log_file]} for errors."
-            log "!!! Exiting with error.  You must stop mongrel and clear the .pid before I'll attempt a start."
+            Mongrel.error(:info, "!!! PID file #{defaults[:pid_file]} already exists.  Mongrel could be running already.  Check your #{defaults[:log_file]} for errors.")
+            Mongrel.log(:error, "!!! Exiting with error.  You must stop mongrel and clear the .pid before I'll attempt a start.")
             exit 1
           end
 
           daemonize
-          log "Daemonized, any open files are closed.  Look at #{defaults[:pid_file]} and #{defaults[:log_file]} for info."
-          log "Settings loaded from #{@config_file} (they override command line)." if @config_file
+          Mongrel.log(:info, "Daemonized, any open files are closed.  Look at #{defaults[:pid_file]} and #{defaults[:log_file]} for info.")
+          Mongrel.log(:info, "Settings loaded from #{@config_file} (they override command line).") if @config_file
         end
 
-        log "Starting Mongrel listening at #{defaults[:host]}:#{defaults[:port]}"
+        Mongrel.log(:info, "Starting Mongrel listening at #{defaults[:host]}:#{defaults[:port]}")
 
         listener do
           mime = {}
           if defaults[:mime_map]
-            log "Loading additional MIME types from #{defaults[:mime_map]}"
+            Mongrel.log(:info, "Loading additional MIME types from #{defaults[:mime_map]}")
             mime = load_mime_map(defaults[:mime_map], mime)
           end
 
           if defaults[:debug]
-            log "Installing debugging prefixed filters. Look in log/mongrel_debug for the files."
+            Mongrel.log(:info, "Installing debugging prefixed filters. Look in log/mongrel_debug for the files.")
             debug "/"
           end
 
-          log "Starting Rails with #{defaults[:environment]} environment..."
-          log "Mounting Rails at #{defaults[:prefix]}..." if defaults[:prefix]
+          Mongrel.log(:info, "Starting Rails with #{defaults[:environment]} environment...")
+          Mongrel.log(:info, "Mounting Rails at #{defaults[:prefix]}...") if defaults[:prefix]
           uri defaults[:prefix] || "/", :handler => rails(:mime => mime, :prefix => defaults[:prefix])
-          log "Rails loaded."
+          Mongrel.log(:info, "Rails loaded.")
 
-          log "Loading any Rails specific GemPlugins"
+          Mongrel.log(:info, "Loading any Rails specific GemPlugins" )
           load_plugins
 
           if defaults[:config_script]
-            log "Loading #{defaults[:config_script]} external config script"
+            Mongrel.log(:info, "Loading #{defaults[:config_script]} external config script")
             run_config(defaults[:config_script])
           end
 
@@ -126,12 +126,12 @@ module Mongrel
       end
 
       config.run
-      config.log "Mongrel #{Mongrel::Const::MONGREL_VERSION} available at #{@address}:#{@port}"
+      Mongrel.log(:info, "Mongrel #{Mongrel::Const::MONGREL_VERSION} available at #{@address}:#{@port}")
 
       if config.defaults[:daemon]
         config.write_pid_file
       else
-        config.log "Use CTRL-C to stop."
+        Mongrel.log(:info, "Use CTRL-C to stop.")
       end
 
       config.join
@@ -139,18 +139,18 @@ module Mongrel
       if config.needs_restart
         unless RUBY_PLATFORM =~ /djgpp|(cyg|ms|bcc)win|mingw/
           cmd = "ruby #{__FILE__} start #{original_args.join(' ')}"
-          config.log "Restarting with arguments:  #{cmd}"
+          Mongrel.log(:info, "Restarting with arguments:  #{cmd}")
           config.stop(false, true)
           config.remove_pid_file
 
           if config.defaults[:daemon]
             system cmd
           else
-            log(:error, "Can't restart unless in daemon mode.")
+            Mongrel.log(:error, "Can't restart unless in daemon mode.")
             exit 1
           end
         else
-          config.log "Win32 does not support restarts. Exiting."
+          Mongrel.log(:info, "Win32 does not support restarts. Exiting.")
         end
       end
     end
@@ -160,7 +160,7 @@ module Mongrel
       begin
         settings = YAML.load_file(@config_file)
       ensure
-        log(:error, "** Loading settings from #{@config_file} (they override command line)." unless @daemon || settings[:daemon] )
+        Mongrel.log(:error, "** Loading settings from #{@config_file} (they override command line).") unless @daemon || settings[:daemon]
       end
 
       settings[:includes] ||= ["mongrel"]
diff --git a/examples/builder.rb b/examples/builder.rb
index 8307f67..63103bf 100644
--- a/examples/builder.rb
+++ b/examples/builder.rb
@@ -4,9 +4,9 @@ class TestPlugin < GemPlugin::Plugin "/handlers"
   include Mongrel::HttpHandlerPlugin
 
   def process(request, response)
-    log(:error, "My options are: #{options.inspect}")
-    log(:error, "Request Was:")
-    log(:error, request.params.to_yaml)
+    Mongrel.log(:error, "My options are: #{options.inspect}")
+    Mongrel.log(:error, "Request Was:")
+    Mongrel.log(:error, request.params.to_yaml)
   end
 end
 
diff --git a/ext/http11/http11.c b/ext/http11/http11.c
index 00325a2..ad5bf5f 100644
--- a/ext/http11/http11.c
+++ b/ext/http11/http11.c
@@ -391,7 +391,7 @@ void Init_http11()
   DEF_GLOBAL(server_protocol, "SERVER_PROTOCOL");
   DEF_GLOBAL(server_protocol_value, "HTTP/1.1");
   DEF_GLOBAL(http_host, "HTTP_HOST");
-  DEF_GLOBAL(mongrel_version, "Mongrel 1.1.1"); /* XXX Why is this defined here? */
+  DEF_GLOBAL(mongrel_version, "Mongrel 1.1.2"); /* XXX Why is this defined here? */
   DEF_GLOBAL(server_software, "SERVER_SOFTWARE");
   DEF_GLOBAL(port_80, "80");
 
diff --git a/lib/mongrel.rb b/lib/mongrel.rb
index af558e7..bef1460 100644
--- a/lib/mongrel.rb
+++ b/lib/mongrel.rb
@@ -1,3 +1,4 @@
+# Ruby
 require 'socket'
 require 'tempfile'
 require 'yaml'
@@ -6,10 +7,15 @@ require 'etc'
 require 'uri'
 require 'stringio'
 
+# Ensure working require
 require 'mongrel/gems'
 
+# TODO: Only require these for RUBY_VERSION <= 1.8.6
+#       and only for platforms that require it, exclusive matching
+if !RUBY_PLATFORM.match(/java|mswin/) && !RUBY_VERSION.match(/1\.8\.\d/)
 Mongrel::Gems.require 'cgi_multipart_eof_fix'
 Mongrel::Gems.require 'fastthread'
+end
 require 'thread'
 
 require 'http11'
@@ -183,23 +189,23 @@ module Mongrel
       rescue EOFError,Errno::ECONNRESET,Errno::EPIPE,Errno::EINVAL,Errno::EBADF
         client.close rescue nil
       rescue HttpParserError => e
-        log(:error, "#{Time.now.httpdate}: HTTP parse error, malformed request (#{params[Const::HTTP_X_FORWARDED_FOR] || client.peeraddr.last}): #{e.inspect}")
-        log(:error, "#{Time.now.httpdate}: REQUEST DATA: #{data.inspect}\n---\nPARAMS: #{params.inspect}\n---\n")
+        Mongrel.log(:error, "#{Time.now.httpdate}: HTTP parse error, malformed request (#{params[Const::HTTP_X_FORWARDED_FOR] || client.peeraddr.last}): #{e.inspect}")
+        Mongrel.log(:error, "#{Time.now.httpdate}: REQUEST DATA: #{data.inspect}\n---\nPARAMS: #{params.inspect}\n---\n")
         # http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4
         client.write(Const::ERROR_400_RESPONSE)
       rescue Errno::EMFILE
         reap_dead_workers('too many files')
       rescue Object => e
-        log(:error, "#{Time.now.httpdate}: Read error: #{e.inspect}")
-        log(:error, e.backtrace.join("\n"))
+        Mongrel.log(:error, "#{Time.now.httpdate}: Read error: #{e.inspect}")
+        Mongrel.log(:error, e.backtrace.join("\n"))
       ensure
         begin
           client.close
         rescue IOError
           # Already closed
         rescue Object => e
-          log(:error, "#{Time.now.httpdate}: Client error: #{e.inspect}")
-          log(:error, e.backtrace.join("\n"))
+          Mongrel.log(:error, "#{Time.now.httpdate}: Client error: #{e.inspect}")
+          Mongrel.log(:error, e.backtrace.join("\n"))
         end
         request.body.delete if request and request.body.class == Tempfile
       end
@@ -211,14 +217,14 @@ module Mongrel
     # after the reap is done.  It only runs if there are workers to reap.
     def reap_dead_workers(reason='unknown')
       if @workers.list.length > 0
-        log(:error, "#{Time.now.httpdate}: Reaping #{@workers.list.length} threads for slow workers because of '#{reason}'")
+        Mongrel.log(:error, "#{Time.now.httpdate}: Reaping #{@workers.list.length} threads for slow workers because of '#{reason}'")
         error_msg = "#{Time.now.httpdate}: Mongrel timed out this thread: #{reason}"
         mark = Time.now
         @workers.list.each do |worker|
           worker[:started_on] = Time.now if not worker[:started_on]
 
           if mark - worker[:started_on] > @timeout + @throttle
-            log(:error, "#{Time.now.httpdate}: Thread #{worker.inspect} is too old, killing.")
+            Mongrel.log(:error, "#{Time.now.httpdate}: Thread #{worker.inspect} is too old, killing.")
             worker.raise(TimeoutError.new(error_msg))
           end
         end
@@ -233,7 +239,7 @@ module Mongrel
     # that much longer.
     def graceful_shutdown
       while reap_dead_workers("shutdown") > 0
-        log(:error, "#{Time.now.httpdate}: Waiting for #{@workers.list.length} requests to finish, could take #{@timeout + @throttle} seconds.")
+        Mongrel.log(:error, "#{Time.now.httpdate}: Waiting for #{@workers.list.length} requests to finish, could take #{@timeout + @throttle} seconds.")
         sleep @timeout / 10
       end
     end
@@ -279,7 +285,7 @@ module Mongrel
               worker_list = @workers.list
   
               if worker_list.length >= @num_processors
-                log(:error, "#{Time.now.httpdate}: Server overloaded with #{worker_list.length} processors (#@num_processors max). Dropping connection.")
+                Mongrel.log(:error, "#{Time.now.httpdate}: Server overloaded with #{worker_list.length} processors (#@num_processors max). Dropping connection.")
                 client.close rescue nil
                 reap_dead_workers("max processors")
               else
@@ -298,14 +304,14 @@ module Mongrel
               # client closed the socket even before accept
               client.close rescue nil
             rescue Object => e
-              log(:error, "#{Time.now.httpdate}: Unhandled listen loop exception #{e.inspect}.")
-              log(:error, e.backtrace.join("\n"))
+              Mongrel.log(:error, "#{Time.now.httpdate}: Unhandled listen loop exception #{e.inspect}.")
+              Mongrel.log(:error, e.backtrace.join("\n"))
             end
           end
           graceful_shutdown
         ensure
           @socket.close
-          # log(:error, "#{Time.now.httpdate}: Closed socket.")
+          # Mongrel.log(:error, "#{Time.now.httpdate}: Closed socket.")
         end
       end
 
diff --git a/lib/mongrel/command.rb b/lib/mongrel/command.rb
index a3ee57d..d99208e 100644
--- a/lib/mongrel/command.rb
+++ b/lib/mongrel/command.rb
@@ -55,14 +55,14 @@ module Mongrel
         # I need to add my own -h definition to prevent the -h by default from exiting.
         @opt.on_tail("-h", "--help", "Show this message") do
           @done_validating = true
-          puts @opt
+          Mongrel.log(:info, @opt)
         end
 
         # I need to add my own -v definition to prevent the -v from exiting by default as well.
         @opt.on_tail("--version", "Show version") do
           @done_validating = true
           if VERSION
-            puts "Version #{Mongrel::Const::MONGREL_VERSION}"
+            Mongrel.log(:info, "Version #{Mongrel::Const::MONGREL_VERSION}")
           end
         end
 
@@ -155,17 +155,17 @@ module Mongrel
 
       # Prints a list of available commands.
       def print_command_list
-        puts "#{Mongrel::Command::BANNER}\nAvailable commands are:\n\n"
+        Mongrel.log(:info, "#{Mongrel::Command::BANNER}\nAvailable commands are:\n\n")
 
         self.commands.each do |name|
           if /mongrel::/ =~ name
             name = name[9 .. -1]
           end
 
-          puts " - #{name[1 .. -1]}\n"
+          Mongrel.log(:info, " - #{name[1 .. -1]}\n")
         end
 
-        puts "\nEach command takes -h as an option to get help."
+        Mongrel.log(:info, "\nEach command takes -h as an option to get help.")
 
       end
 
@@ -180,7 +180,7 @@ module Mongrel
           print_command_list
           return true
         elsif cmd_name == "--version"
-          puts "Mongrel Web Server #{Mongrel::Const::MONGREL_VERSION}"
+          Mongrel.log(:info, "Mongrel Web Server #{Mongrel::Const::MONGREL_VERSION}")
           return true
         end
 
diff --git a/lib/mongrel/configurator.rb b/lib/mongrel/configurator.rb
index 0bb3c62..0d5aa37 100644
--- a/lib/mongrel/configurator.rb
+++ b/lib/mongrel/configurator.rb
@@ -59,18 +59,18 @@ module Mongrel
         target_gid = Etc.getgrnam(group).gid if group
 
         if uid != target_uid or gid != target_gid
-          log(:info, "Initiating groups for #{user.inspect}:#{group.inspect}.")
+          Mongrel.log(:info, "Initiating groups for #{user.inspect}:#{group.inspect}.")
           Process.initgroups(user, target_gid)
         
-          log(:info, "Changing group to #{group.inspect}.")
+          Mongrel.log(:info, "Changing group to #{group.inspect}.")
           Process::GID.change_privilege(target_gid)
 
-          log(:info, "Changing user to #{user.inspect}." )
+          Mongrel.log(:info, "Changing user to #{user.inspect}." )
           Process::UID.change_privilege(target_uid)
         end
       rescue Errno::EPERM => e
-        log(:critical, "Couldn't change user and group to #{user.inspect}:#{group.inspect}: #{e.to_s}.")
-        log(:critical, "Mongrel failed to start.")
+        Mongrel.log(:critical, "Couldn't change user and group to #{user.inspect}:#{group.inspect}: #{e.to_s}.")
+        Mongrel.log(:critical, "Mongrel failed to start.")
         exit 1
       end
     end
@@ -82,7 +82,7 @@ module Mongrel
     # Writes the PID file if we're not on Windows.
     def write_pid_file
       unless RUBY_PLATFORM =~ /djgpp|(cyg|ms|bcc)win|mingw/
-        log(:info, "Writing PID file to #{@pid_file}")
+        Mongrel.log(:info, "Writing PID file to #{@pid_file}")
         open(@pid_file,"w") {|f| f.write(Process.pid) }
         open(@pid_file,"w") do |f|
           f.write(Process.pid)
@@ -192,7 +192,7 @@ module Mongrel
         if logfile[0].chr != "/"
           logfile = File.join(ops[:cwd],logfile)
           if not File.exist?(File.dirname(logfile))
-            log(:critical, "!!! Log file directory not found at full path #{File.dirname(logfile)}.  Update your configuration to use a full path.")
+            Mongrel.log(:critical, "!!! Log file directory not found at full path #{File.dirname(logfile)}.  Update your configuration to use a full path.")
             exit 1
           end
         end
@@ -203,7 +203,7 @@ module Mongrel
         Dir.chdir(ops[:cwd])
 
       else
-        log(:warning, "WARNING: Win32 does not support daemon mode.")
+        Mongrel.log(:warning, "WARNING: Win32 does not support daemon mode.")
       end
     end
 
@@ -249,7 +249,7 @@ module Mongrel
       mime = load_yaml(file, mime)
 
       # check all the mime types to make sure they are the right format
-      mime.each {|k,v| log(:warning, "WARNING: MIME type #{k} must start with '.'") if k.index(".") != 0 }
+      mime.each {|k,v| Mongrel.log(:warning, "WARNING: MIME type #{k} must start with '.'") if k.index(".") != 0 }
 
       return mime
     end
@@ -361,22 +361,22 @@ module Mongrel
       ops = resolve_defaults(options)
 
       # forced shutdown, even if previously restarted (actually just like TERM but for CTRL-C)
-      trap("INT") { log(:notice, "INT signal received."); stop(false) }
+      trap("INT") { Mongrel.log(:notice, "INT signal received."); stop(false) }
 
       # always clean up the pid file
       at_exit { remove_pid_file }
 
       unless RUBY_PLATFORM =~ /djgpp|(cyg|ms|bcc)win|mingw/
         # graceful shutdown
-        trap("TERM") { log(:notice, "TERM signal received."); stop }
+        trap("TERM") { Mongrel.log(:notice, "TERM signal received."); stop }
         # debug mode
-        trap("USR1") { log(:notice, "USR1 received, toggling $mongrel_debug_client to #{!$mongrel_debug_client}"); $mongrel_debug_client = !$mongrel_debug_client }
+        trap("USR1") { Mongrel.log(:notice, "USR1 received, toggling $mongrel_debug_client to #{!$mongrel_debug_client}"); $mongrel_debug_client = !$mongrel_debug_client }
         # restart
-        trap("USR2") { log(:notice, "USR2 signal received."); stop(true) }
+        trap("USR2") { Mongrel.log(:notice, "USR2 signal received."); stop(true) }
 
-        log(:notice, "Signals ready.  TERM => stop.  USR2 => restart.  INT => stop (no restart).")
+        Mongrel.log(:notice, "Signals ready.  TERM => stop.  USR2 => restart.  INT => stop (no restart).")
       else
-        log(:notice, "Signals ready.  INT => stop (no restart).")
+        Mongrel.log(:notice, "Signals ready.  INT => stop (no restart).")
       end
     end
 
diff --git a/lib/mongrel/debug.rb b/lib/mongrel/debug.rb
index 220af60..d2363fb 100644
--- a/lib/mongrel/debug.rb
+++ b/lib/mongrel/debug.rb
@@ -97,7 +97,7 @@ module RequestLog
     def process(request,response)
       p = request.params
       #STDERR.puts "#{p['REMOTE_ADDR']} - [#{Time.now.httpdate}] \"#{p['REQUEST_METHOD']} #{p["REQUEST_URI"]} HTTP/1.1\""
-      log(:info, "#{p['REMOTE_ADDR']} \"#{p['REQUEST_METHOD']} #{p["REQUEST_URI"]} HTTP/1.1\"")
+      Mongrel.log(:info, "#{p['REMOTE_ADDR']} \"#{p['REQUEST_METHOD']} #{p["REQUEST_URI"]} HTTP/1.1\"")
     end
   end
   
diff --git a/lib/mongrel/logger.rb b/lib/mongrel/logger.rb
index e3dee7f..1adb593 100644
--- a/lib/mongrel/logger.rb
+++ b/lib/mongrel/logger.rb
@@ -3,10 +3,6 @@
 #       Merb:  http://merbivore.com
 module Mongrel
 
-  #class << self
-  #  attr_accessor :logger
-  #end
-
   class Log
     attr_accessor :logger
     attr_accessor :log_level
@@ -20,12 +16,11 @@ module Mongrel
       @logger    = initialize_io(log)
       @log_level = Levels[:name][log_level]
 
-      if !RUBY_PLATFORM.match(/java|mswin/) &&
-         !(@log == STDOUT) &&
-        @log.respond_to?(:write_nonblock)
-        
+      if !RUBY_PLATFORM.match(/java|mswin/) && !(@log == STDOUT) &&
+           @log.respond_to?(:write_nonblock)
         @aio = true
       end
+      $MongrelLogger = self
     end
     
     # Writes a string to the logger. Writing of the string is skipped if the string's log level is
@@ -52,7 +47,7 @@ module Mongrel
       else
         @log = open(log, (File::WRONLY | File::APPEND | File::CREAT))
         @log.sync = true
-        @log.write("#{Time.now.httpdate} Logfile created")
+        @log.write("#{Time.now.httpdate} Logfile created\n")
       end
     end
 
@@ -60,7 +55,9 @@ module Mongrel
   
   # Convenience wrapper for logging, allows us to use Mongrel.log
   def self.log(level, string)
-    logger.log(level,string)
+    # If no logger was defined, log to STDOUT.
+    $MongrelLogger ||= Mongrel::Log.new(STDOUT, :debug)
+    $MongrelLogger.log(level,string)
   end
   
 end
diff --git a/lib/mongrel/rails.rb b/lib/mongrel/rails.rb
index f0ecff6..62f7d67 100644
--- a/lib/mongrel/rails.rb
+++ b/lib/mongrel/rails.rb
@@ -161,9 +161,9 @@ module Mongrel
           raise "Rails was not configured.  Read the docs for RailsConfigurator."
         end
 
-        log "Reloading Rails..."
+        Mongrel.log(:info, "Reloading Rails...")
         @rails_handler.reload!
-        log "Done reloading Rails."
+        Mongrel.log(:info, "Done reloading Rails.")
 
       end
 
@@ -175,9 +175,9 @@ module Mongrel
 
         unless RUBY_PLATFORM =~ /djgpp|(cyg|ms|bcc)win|mingw/
           # rails reload
-          trap("HUP") { log "HUP signal received."; reload!          }
+          trap("HUP") { Mongrel.log(:info, "HUP signal received."); reload! }
 
-          log "Rails signals registered.  HUP => reload (without restart).  It might not work well."
+          Mongrel.log(:info, "Rails signals registered.  HUP => reload (without restart).  It might not work well.")
         end
       end
     end
diff --git a/projects/mongrel_cluster/lib/mongrel_cluster/init.rb b/projects/mongrel_cluster/lib/mongrel_cluster/init.rb
index 548ca62..53cb5dc 100644
--- a/projects/mongrel_cluster/lib/mongrel_cluster/init.rb
+++ b/projects/mongrel_cluster/lib/mongrel_cluster/init.rb
@@ -80,23 +80,23 @@ module Cluster
       @ports.each do |port|              
         if @clean && pid_file_exists?(port) && !check_process(port)
           pid_file = port_pid_file(port)        
-          log "missing process: removing #{pid_file}"
+          Mongrel.log(:info, "missing process: removing #{pid_file}")
           chdir_cwd do
             File.unlink(pid_file)
           end
         end
         
         if pid_file_exists?(port) && check_process(port)
-          log "already started port #{port}"        
+          Mongrel.log(:info, "already started port #{port}")
           next
         end
 
         exec_cmd = cmd + " -p #{port} -P #{port_pid_file(port)}"
         exec_cmd += " -l #{port_log_file(port)}"
-        log "starting port #{port}"          
+        Mongrel.log(:info, "starting port #{port}")
         log_verbose exec_cmd
         output = `#{exec_cmd}`
-        log(:error, output) unless $?.success?
+        Mongrel.log(:error, output) unless $?.success?
       end
     end
       
@@ -112,20 +112,20 @@ module Cluster
       @ports.each do |port|
         pid = check_process(port)        
         if @clean && pid && !pid_file_exists?(port)      
-          log "missing pid_file: killing mongrel_rails port #{port}, pid #{pid}"
+          Mongrel.log(:info, "missing pid_file: killing mongrel_rails port #{port}, pid #{pid}")
           Process.kill("KILL", pid.to_i)  
         end
         
         if !check_process(port)
-          log "already stopped port #{port}"                  
+          Mongrel.log(:info, "already stopped port #{port}")
           next      
         end
 
         exec_cmd = cmd + " -P #{port_pid_file(port)}"
-        log "stopping port #{port}"          
+        Mongrel.log(:info, "stopping port #{port}")
         log_verbose exec_cmd
         output = `#{exec_cmd}`
-        log(:error, output) unless $?.success?
+        Mongrel.log(:error, output) unless $?.success?
         
       end
     end
@@ -138,18 +138,18 @@ module Cluster
       @ports.each do |port|
         pid = check_process(port)        
         unless pid_file_exists?(port)        
-          log(:error, "missing pid_file: #{port_pid_file(port)}")
+          Mongrel.log(:error, "missing pid_file: #{port_pid_file(port)}")
           status = STATUS_ERROR
         else
-          log(:info, "found pid_file: #{port_pid_file(port)}")
+          Mongrel.log(:info, "found pid_file: #{port_pid_file(port)}")
         end    
         if pid
-          log(:info, "found mongrel_rails: port #{port}, pid #{pid}")
+          Mongrel.log(:info, "found mongrel_rails: port #{port}, pid #{pid}")
         else
-          log(:error, "missing mongrel_rails: port #{port}")
+          Mongrel.log(:error, "missing mongrel_rails: port #{port}")
           status = STATUS_ERROR
         end
-        log(:info, "")
+        Mongrel.log(:info, "")
       end
 
       status
@@ -212,7 +212,7 @@ module Cluster
     end
     
     def log_verbose(message)
-      log(:info, message) if @verbose
+      Mongrel.log(:info, message) if @verbose
     end
 
   end
@@ -329,7 +329,7 @@ module Cluster
       @options["group"] = @group if @group
       @options["prefix"] = @prefix if @prefix
       
-      log "Writing configuration file to #{@config_file}."
+      Mongrel.log(:info, "Writing configuration file to #{@config_file}.")
       File.open(@config_file,"w") {|f| f.write(@options.to_yaml)}
     end  
   end
diff --git a/site/src/docs/howto.page b/site/src/docs/howto.page
index f59bcfa..f8d3223 100644
--- a/site/src/docs/howto.page
+++ b/site/src/docs/howto.page
@@ -398,7 +398,7 @@ You can use the -S configure script to add your own handlers
 with code like this:
 
  <pre><code>
- trap("USR1") { log "I'm doing stuff." }
+ trap("USR1") { Mongrel.log(:info, "I'm doing stuff.") }
  </code></pre>