Index: paste/script/serve.py
===================================================================
--- paste/script/serve.py	(revision 7481)
+++ paste/script/serve.py	(working copy)
@@ -198,7 +198,7 @@
                 self.options.log_file = 'paster.log'
 
         # Ensure the log file is writeable
-        if self.options.log_file:
+        if self.options.log_file and self.options.log_file != '-':
             try:
                 writeable_log_file = open(self.options.log_file, 'a')
             except IOError, ioe:
@@ -231,9 +231,12 @@
             self.record_pid(self.options.pid_file)
 
         if self.options.log_file:
-            stdout_log = LazyWriter(self.options.log_file, 'a')
-            sys.stdout = stdout_log
-            sys.stderr = stdout_log
+            if self.options.log_file == '-':
+                stdout_log = sys.stdout
+            else:
+                stdout_log = LazyWriter(self.options.log_file, 'a')
+                sys.stdout = stdout_log
+                sys.stderr = stdout_log
             logging.basicConfig(stream=stdout_log)
 
         log_fn = app_spec
@@ -301,6 +304,11 @@
 
         # @@: Should we set the umask and cwd now?
 
+        # Only close files if we're not redirecting to stdout
+        if self.options.log_file != '-':
+            self.close_all_files()
+
+    def close_all_files(self):
         import resource  # Resource usage information.
         maxfd = resource.getrlimit(resource.RLIMIT_NOFILE)[1]
         if (maxfd == resource.RLIM_INFINITY):
