summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--lib/logger.rb18
-rw-r--r--test/logger/test_logger.rb21
3 files changed, 45 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index c5ec4546a2..6bf05b6dc6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Mon Sep 23 23:10:16 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+
+ * lib/logger.rb: add Logger#<<(msg) for writing msg without any
+ formatting.
+
+ * test/logger/test_logger.rb: ditto.
+
Mon Sep 22 21:28:57 2003 WATANABE Hirofumi <eban@ruby-lang.org>
* MANIFEST: updated.
diff --git a/lib/logger.rb b/lib/logger.rb
index 7e8134eee3..04a106b448 100644
--- a/lib/logger.rb
+++ b/lib/logger.rb
@@ -186,6 +186,24 @@ class Logger
alias log add
# SYNOPSIS
+ # Logger#<<(msg)
+ #
+ # ARGS
+ # msg Message.
+ #
+ # RETURN
+ # Same as IO#<<. If logdev is not given, returns nil.
+ #
+ # DESCRIPTION
+ # Dump given message to log device without any formatting.
+ #
+ def <<(msg)
+ unless @logdev.nil?
+ @logdev.write(msg)
+ end
+ end
+
+ # SYNOPSIS
# Logger#debug(progname = nil) { ... } = nil
# Logger#info(progname = nil) { ... } = nil
# Logger#warn(progname = nil) { ... } = nil
diff --git a/test/logger/test_logger.rb b/test/logger/test_logger.rb
index afaa05755f..339a72e867 100644
--- a/test/logger/test_logger.rb
+++ b/test/logger/test_logger.rb
@@ -1,6 +1,5 @@
require 'test/unit'
require 'logger'
-GC.start
class TestLoggerSeverity < Test::Unit::TestCase
def test_enum
@@ -210,4 +209,24 @@ class TestLogger < Test::Unit::TestCase
log = log_add(logger, INFO, MyMsg.new)
assert_equal("my_msg\n", log.msg)
end
+
+ def test_lshift
+ r, w = IO.pipe
+ logger = Logger.new(w)
+ logger << "msg"
+ read_ready, = IO.select([r], nil, nil, 0.1)
+ w.close
+ msg = r.read
+ r.close
+ assert_equal("msg", msg)
+ #
+ r, w = IO.pipe
+ logger = Logger.new(w)
+ logger << "msg2\n\n"
+ read_ready, = IO.select([r], nil, nil, 0.1)
+ w.close
+ msg = r.read
+ r.close
+ assert_equal("msg2\n\n", msg)
+ end
end