Commit 0d68ac44 authored by Stephen Morris's avatar Stephen Morris
Browse files

[trac1024] Route unit test logging output to /dev/null by default

The change to make DEBUG the default logging severity generates a
lot of output.  C++ unit test output is now routed to /dev/null by
default, with B10_LOGGER_DESTINATION needing to be set to stdout
or stderr to make it visible.
parent b5e49faa
......@@ -57,60 +57,63 @@ setDestination(const char* root, const isc::log::Severity severity,
using namespace isc::log;
// Constants: not declared static as this is function is expected to be
// called once only
const string DEVNULL = "/dev/null";
const string STDOUT = "stdout";
const string STDERR = "stderr";
const string SYSLOG = "syslog";
const string SYSLOG_COLON = "syslog:";
// Get the destination. If not specified, assume /dev/null. (The default
// severity for unit tests is DEBUG, which generates a lot of output.
// Routing the logging to /dev/null will suppress that, whilst still
// ensuring that the code paths are tested.)
const char* destination = getenv("B10_LOGGER_DESTINATION");
if (destination != NULL) {
// Constants: not declared static as this is function is expected to be
// called once only
const string STDOUT = "stdout";
const string STDERR = "stderr";
const string SYSLOG = "syslog";
const string SYSLOG_COLON = "syslog:";
// Prepare the objects to define the logging specification
LoggerSpecification spec(root, severity, dbglevel);
OutputOption option;
// Set up output option according to destination specification
const string dest = destination;
if (dest == STDOUT) {
option.destination = OutputOption::DEST_CONSOLE;
option.stream = OutputOption::STR_STDOUT;
} else if (dest == STDERR) {
option.destination = OutputOption::DEST_CONSOLE;
option.stream = OutputOption::STR_STDERR;
} else if (dest == SYSLOG) {
option.destination = OutputOption::DEST_SYSLOG;
// Use default specified in OutputOption constructor for the
// syslog destination
} else if (dest.find(SYSLOG_COLON) == 0) {
option.destination = OutputOption::DEST_SYSLOG;
// Must take account of the string actually being "syslog:"
if (dest == SYSLOG_COLON) {
cerr << "**ERROR** value for B10_LOGGER_DESTINATION of " <<
SYSLOG_COLON << " is invalid, " << SYSLOG <<
" will be used instead\n";
// Use default for logging facility
} else {
// Everything else in the string is the facility name
option.facility = dest.substr(SYSLOG_COLON.size());
}
const string dest((destination == NULL) ? DEVNULL : destination);
// Prepare the objects to define the logging specification
LoggerSpecification spec(root, severity, dbglevel);
OutputOption option;
// Set up output option according to destination specification
if (dest == STDOUT) {
option.destination = OutputOption::DEST_CONSOLE;
option.stream = OutputOption::STR_STDOUT;
} else if (dest == STDERR) {
option.destination = OutputOption::DEST_CONSOLE;
option.stream = OutputOption::STR_STDERR;
} else if (dest == SYSLOG) {
option.destination = OutputOption::DEST_SYSLOG;
// Use default specified in OutputOption constructor for the
// syslog destination
} else if (dest.find(SYSLOG_COLON) == 0) {
option.destination = OutputOption::DEST_SYSLOG;
// Must take account of the string actually being "syslog:"
if (dest == SYSLOG_COLON) {
cerr << "**ERROR** value for B10_LOGGER_DESTINATION of " <<
SYSLOG_COLON << " is invalid, " << SYSLOG <<
" will be used instead\n";
// Use default for logging facility
} else {
// Not a recognised destination, assume a file
option.destination = OutputOption::DEST_FILE;
option.filename = dest;
// Everything else in the string is the facility name
option.facility = dest.substr(SYSLOG_COLON.size());
}
// ... and set the destination
spec.addOutputOption(option);
LoggerManager manager;
manager.process(spec);
} else {
// Not a recognised destination, assume a file.
option.destination = OutputOption::DEST_FILE;
option.filename = dest;
}
// ... and set the destination
spec.addOutputOption(option);
LoggerManager manager;
manager.process(spec);
}
} // Anonymous namespace
......
......@@ -44,7 +44,7 @@ WARN [bind10.log] LOG_BAD_STREAM bad log console output stream: warn
ERROR [bind10.log] LOG_DUPLICATE_MESSAGE_ID duplicate message ID (error) in compiled code
FATAL [bind10.log] LOG_NO_MESSAGE_ID line fatal: message definition line found without a message ID
.
B10_LOGGER_SEVERITY=DEBUG B10_LOGGER_DBGLEVEL=99 ./init_logger_test 2>&1 | \
B10_LOGGER_DESTINATION=stdout B10_LOGGER_SEVERITY=DEBUG B10_LOGGER_DBGLEVEL=99 ./init_logger_test | \
cut -d' ' -f3- | diff $tempfile -
passfail $?
......@@ -57,7 +57,7 @@ WARN [bind10.log] LOG_BAD_STREAM bad log console output stream: warn
ERROR [bind10.log] LOG_DUPLICATE_MESSAGE_ID duplicate message ID (error) in compiled code
FATAL [bind10.log] LOG_NO_MESSAGE_ID line fatal: message definition line found without a message ID
.
B10_LOGGER_SEVERITY=DEBUG B10_LOGGER_DBGLEVEL=50 ./init_logger_test 2>&1 | \
B10_LOGGER_DESTINATION=stdout B10_LOGGER_SEVERITY=DEBUG B10_LOGGER_DBGLEVEL=50 ./init_logger_test | \
cut -d' ' -f3- | diff $tempfile -
passfail $?
......@@ -67,7 +67,7 @@ WARN [bind10.log] LOG_BAD_STREAM bad log console output stream: warn
ERROR [bind10.log] LOG_DUPLICATE_MESSAGE_ID duplicate message ID (error) in compiled code
FATAL [bind10.log] LOG_NO_MESSAGE_ID line fatal: message definition line found without a message ID
.
B10_LOGGER_SEVERITY=WARN ./init_logger_test 2>&1 | \
B10_LOGGER_DESTINATION=stdout B10_LOGGER_SEVERITY=WARN ./init_logger_test | \
cut -d' ' -f3- | diff $tempfile -
passfail $?
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment