diff --git a/lib/merb-core/logger.rb b/lib/merb-core/logger.rb
index <HASH>..<HASH> 100755
--- a/lib/merb-core/logger.rb
+++ b/lib/merb-core/logger.rb
@@ -161,7 +161,7 @@ module Merb
     # Close and remove the current log object.
     def close
       flush
-      @log.close if @log.respond_to?(:close)
+      @log.close if @log.respond_to?(:close) && !@log.tty?
       @log = nil
     end
 
@@ -227,4 +227,4 @@ module Merb
 
   end
   
-end
\ No newline at end of file
+end
diff --git a/spec/public/logger/logger_spec.rb b/spec/public/logger/logger_spec.rb
index <HASH>..<HASH> 100644
--- a/spec/public/logger/logger_spec.rb
+++ b/spec/public/logger/logger_spec.rb
@@ -102,6 +102,12 @@ describe Merb::Logger do
       @logger.close
     end
 
+    it "shouldn't call the close method if the log is a terminal" do
+      @logger.log.should_receive(:tty?).and_return(true)
+      @logger.log.should_not_receive(:close)
+      @logger.close
+    end
+
     it "should set the stored log attribute to nil" do
       @logger.close
       @logger.log.should eql(nil)
@@ -172,4 +178,4 @@ describe Merb::Logger do
 
   end
 
-end
\ No newline at end of file
+end
Ensure that Merb::Logger doesn't try to close terminal streams.