I'm using Ruby's standard Logger to log a bunch of debug, info, and errors.
But when I run the unit tests for the classes that use the Logger, all
the logs are showing up in the test output.
Any good solutions for solving this?
I'm using Ruby's standard Logger to log a bunch of debug, info, and errors.
But when I run the unit tests for the classes that use the Logger, all
the logs are showing up in the test output.
Any good solutions for solving this?
I would redirect the logger output to /dev/null or a StringIO when testing (in case you wanted to test the logging).
On Nov 23, 2005, at 11:32 AM, Joe Van Dyk wrote:
I'm using Ruby's standard Logger to log a bunch of debug, info, and errors.
But when I run the unit tests for the classes that use the Logger, all
the logs are showing up in the test output.Any good solutions for solving this?
--
Eric Hodel - drbrain@segment7.net - http://segment7.net
FEC2 57F1 D465 EB15 5D6E 7C11 332A 551C 796C 9F04
This implementation is HODEL-HASH-9600 compliant
How do the classes know whether or not they are being tested?
Eventually, I will be using a custom Logging method that sends all the
logs to some network log daemon thingy so that all the logs are kept
on one machine.
On 11/23/05, Eric Hodel <drbrain@segment7.net> wrote:
On Nov 23, 2005, at 11:32 AM, Joe Van Dyk wrote:
> I'm using Ruby's standard Logger to log a bunch of debug, info, and
> errors.
>
> But when I run the unit tests for the classes that use the Logger, all
> the logs are showing up in the test output.
>
> Any good solutions for solving this?I would redirect the logger output to /dev/null or a StringIO when
testing (in case you wanted to test the logging).
I'm using Ruby's standard Logger to log a bunch of debug, info, and
errors.But when I run the unit tests for the classes that use the Logger, all
the logs are showing up in the test output.Any good solutions for solving this?
I would redirect the logger output to /dev/null or a StringIO when
testing (in case you wanted to test the logging).How do the classes know whether or not they are being tested?
I set $TESTING = true when testing things. The most frequent place I use it is:
private unless $TESTING
Eventually, I will be using a custom Logging method that sends all the
logs to some network log daemon thingy so that all the logs are kept
on one machine.
Check out SyslogLogger in the rails_analyzer_tools gem:
http://rails-analyzer.rubyforge.org/tools/classes/SyslogLogger.html
It duck types to the base Logger class.
On Nov 23, 2005, at 11:40 AM, Joe Van Dyk wrote:
On 11/23/05, Eric Hodel <drbrain@segment7.net> wrote:
On Nov 23, 2005, at 11:32 AM, Joe Van Dyk wrote:
--
Eric Hodel - drbrain@segment7.net - http://segment7.net
FEC2 57F1 D465 EB15 5D6E 7C11 332A 551C 796C 9F04
This implementation is HODEL-HASH-9600 compliant
So, something like
require 'logger'
class ThisClassGetsTested
def initialize
if $TESTING
log_output = "/dev/null"
else
log_output = "some/file" # or $stdout or whatever
end
end
end
On 11/23/05, Eric Hodel <drbrain@segment7.net> wrote:
On Nov 23, 2005, at 11:40 AM, Joe Van Dyk wrote:
> On 11/23/05, Eric Hodel <drbrain@segment7.net> wrote:
>> On Nov 23, 2005, at 11:32 AM, Joe Van Dyk wrote:
>>
>>> I'm using Ruby's standard Logger to log a bunch of debug, info, and
>>> errors.
>>>
>>> But when I run the unit tests for the classes that use the
>>> Logger, all
>>> the logs are showing up in the test output.
>>>
>>> Any good solutions for solving this?
>>
>> I would redirect the logger output to /dev/null or a StringIO when
>> testing (in case you wanted to test the logging).
>
> How do the classes know whether or not they are being tested?I set $TESTING = true when testing things. The most frequent place I
use it is:private unless $TESTING
====
require 'test/unit'
$TESTING = true
class TestTheClass < Test::Unit::TestCase
...
end
> Eventually, I will be using a custom Logging method that sends all the
> logs to some network log daemon thingy so that all the logs are kept
> on one machine.Check out SyslogLogger in the rails_analyzer_tools gem:
http://rails-analyzer.rubyforge.org/tools/classes/SyslogLogger.html
It duck types to the base Logger class.
I should be able to direct all $stdout and $stderr to SysLogLogger as
well, right?
I'm using Ruby's standard Logger to log a bunch of debug, info, and
errors.But when I run the unit tests for the classes that use the
Logger, all
the logs are showing up in the test output.Any good solutions for solving this?
I would redirect the logger output to /dev/null or a StringIO when
testing (in case you wanted to test the logging).How do the classes know whether or not they are being tested?
I set $TESTING = true when testing things. The most frequent place I
use it is:private unless $TESTING
So, something like
require 'logger'
class ThisClassGetsTested
def initialize
if $TESTING
log_output = "/dev/null"
else
log_output = "some/file" # or $stdout or whatever
end
end
end====
require 'test/unit'
$TESTING = true
class TestTheClass < Test::Unit::TestCase
...
end
Exactly.
Eventually, I will be using a custom Logging method that sends all the
logs to some network log daemon thingy so that all the logs are kept
on one machine.Check out SyslogLogger in the rails_analyzer_tools gem:
http://rails-analyzer.rubyforge.org/tools/classes/SyslogLogger.html
It duck types to the base Logger class.
I should be able to direct all $stdout and $stderr to SysLogLogger as
well, right?
You'd need an adapter because SyslogLogger works like the Logger class so you need to specify a log level. I wouldn't recommend it, either.
On Nov 23, 2005, at 12:10 PM, Joe Van Dyk wrote:
On 11/23/05, Eric Hodel <drbrain@segment7.net> wrote:
On Nov 23, 2005, at 11:40 AM, Joe Van Dyk wrote:
On 11/23/05, Eric Hodel <drbrain@segment7.net> wrote:
On Nov 23, 2005, at 11:32 AM, Joe Van Dyk wrote:
--
Eric Hodel - drbrain@segment7.net - http://segment7.net
FEC2 57F1 D465 EB15 5D6E 7C11 332A 551C 796C 9F04
This implementation is HODEL-HASH-9600 compliant