提交 8f999a3f 编写于 作者: A Aaron Patterson

make sure log file is written in binary mode. fixes #497

上级 7b6819f9
......@@ -49,10 +49,12 @@ def initialize(log, level = DEBUG)
@log = log
elsif File.exist?(log)
@log = open(log, (File::WRONLY | File::APPEND))
@log.binmode
@log.sync = true
else
FileUtils.mkdir_p(File.dirname(log))
@log = open(log, (File::WRONLY | File::APPEND | File::CREAT))
@log.binmode
@log.sync = true
end
end
......
......@@ -2,6 +2,7 @@
require 'multibyte_test_helpers'
require 'stringio'
require 'fileutils'
require 'tempfile'
require 'active_support/buffered_logger'
class BufferedLoggerTest < Test::Unit::TestCase
......@@ -16,6 +17,44 @@ def setup
@logger = Logger.new(@output)
end
def test_write_binary_data_to_existing_file
t = Tempfile.new ['development', 'log']
t.binmode
t.write 'hi mom!'
t.close
logger = Logger.new t.path
logger.level = Logger::DEBUG
str = "\x80"
if str.respond_to?(:force_encoding)
str.force_encoding("ASCII-8BIT")
end
logger.add Logger::DEBUG, str
logger.flush
ensure
logger.close
t.close true
end
def test_write_binary_data_create_file
fname = File.join Dir.tmpdir, 'lol', 'rofl.log'
logger = Logger.new fname
logger.level = Logger::DEBUG
str = "\x80"
if str.respond_to?(:force_encoding)
str.force_encoding("ASCII-8BIT")
end
logger.add Logger::DEBUG, str
logger.flush
ensure
logger.close
File.unlink fname
end
def test_should_log_debugging_message_when_debugging
@logger.level = Logger::DEBUG
@logger.add(Logger::DEBUG, @message)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册