Buncha logging stuff showing up in unit tests

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?

On Nov 23, 2005, at 11:32 AM, Joe Van D. 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).


Eric H. - [email protected] - http://segment7.net
FEC2 57F1 D465 EB15 5D6E 7C11 332A 551C 796C 9F04

This implementation is HODEL-HASH-9600 compliant

On 11/23/05, Eric H. [email protected] wrote:

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?

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 H. [email protected] wrote:

the logs are showing up in the test output.

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

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?

On Nov 23, 2005, at 11:40 AM, Joe Van D. wrote:

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.


Eric H. - [email protected] - http://segment7.net
FEC2 57F1 D465 EB15 5D6E 7C11 332A 551C 796C 9F04

This implementation is HODEL-HASH-9600 compliant

On Nov 23, 2005, at 12:10 PM, Joe Van D. wrote:

But when I run the unit tests for the classes that use the
I set $TESTING = true when testing things. The most frequent place I
log_output = “/dev/null”
class TestTheClass < Test::Unit::TestCase

end

Exactly.

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.


Eric H. - [email protected] - http://segment7.net
FEC2 57F1 D465 EB15 5D6E 7C11 332A 551C 796C 9F04

This implementation is HODEL-HASH-9600 compliant