diff --git a/lib/methadone/cli_logger.rb b/lib/methadone/cli_logger.rb index d6a4f58..ee48ad5 100644 --- a/lib/methadone/cli_logger.rb +++ b/lib/methadone/cli_logger.rb @@ -85,13 +85,16 @@ def initialize(log_device=$stdout,error_device=$stderr) super(log_device) @stderr_logger = Logger.new(error_device) - @split_logs = log_device.tty? && error_device.tty? + log_device_tty = tty?(log_device) + error_device_tty = tty?(error_device) + + @split_logs = log_device_tty && error_device_tty self.level = Logger::Severity::INFO @stderr_logger.level = DEFAULT_ERROR_LEVEL - self.formatter = BLANK_FORMAT if log_device.tty? - @stderr_logger.formatter = BLANK_FORMAT if error_device.tty? + self.formatter = BLANK_FORMAT if log_device_tty + @stderr_logger.formatter = BLANK_FORMAT if error_device_tty end def level=(level) @@ -119,5 +122,12 @@ def error_formatter=(formatter) @stderr_logger.formatter=formatter end + private + + def tty?(device_or_string) + return device_or_string.tty? if device_or_string.respond_to? :tty? + false + end + end end diff --git a/test/test_cli_logger.rb b/test/test_cli_logger.rb index 6554f70..344ad30 100644 --- a/test/test_cli_logger.rb +++ b/test/test_cli_logger.rb @@ -1,6 +1,7 @@ require 'base_test' require 'methadone' require 'stringio' +require 'tempfile' class TestCLILogger < BaseTest include Methadone @@ -158,6 +159,27 @@ def tty?; true; end } end + test_that "we can use filenames as log devices" do + Given { + tempfile = Tempfile.new("stderr_log") + @stdout_file = tempfile.path + tempfile.close + + tempfile = Tempfile.new("stdout_log") + @stderr_file = tempfile.path + tempfile.close + } + When { + @logger = CLILogger.new(@stdout_file,@stderr_file) + @logger.info("some info") + @logger.error("some error") + } + Then { + File.read(@stdout_file).should =~ /some info/ + File.read(@stderr_file).should =~ /some error/ + } + end + private def log_all_levels