Disable base/logging.h stderr logs by default for webrtc/ tests.
base/logging.h dumped to stderr by default in debug mode, but webrtc "trace" (via system_wrappers/../logging.h) has that feature disabled by default. This makes the two consistent. Bonus: log the filename:line in base/logging.h, which exists in the system_wrappers variant. TEST=neteq_impl.cc logs (which use base/logging.h) no longer appear in debug mode, unless --logs=true is passed. Filenames appear correctly. Review URL: https://codereview.webrtc.org/1331503002 Cr-Commit-Position: refs/heads/master@{#9868}
This commit is contained in:
parent
9eb1365939
commit
88703d756a
@ -44,12 +44,25 @@ static const int kMaxLogLineSize = 1024 - 60;
|
||||
#include "webrtc/base/timeutils.h"
|
||||
|
||||
namespace rtc {
|
||||
namespace {
|
||||
|
||||
// Return the filename portion of the string (that following the last slash).
|
||||
const char* FilenameFromPath(const char* file) {
|
||||
const char* end1 = ::strrchr(file, '/');
|
||||
const char* end2 = ::strrchr(file, '\\');
|
||||
if (!end1 && !end2)
|
||||
return file;
|
||||
else
|
||||
return (end1 > end2) ? end1 + 1 : end2 + 1;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Constant Labels
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
const char * FindLabel(int value, const ConstantLabel entries[]) {
|
||||
const char* FindLabel(int value, const ConstantLabel entries[]) {
|
||||
for (int i = 0; entries[i].label; ++i) {
|
||||
if (value == entries[i].value) {
|
||||
return entries[i].label;
|
||||
@ -58,12 +71,12 @@ const char * FindLabel(int value, const ConstantLabel entries[]) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
std::string ErrorName(int err, const ConstantLabel * err_table) {
|
||||
std::string ErrorName(int err, const ConstantLabel* err_table) {
|
||||
if (err == 0)
|
||||
return "No error";
|
||||
|
||||
if (err_table != 0) {
|
||||
if (const char * value = FindLabel(err, err_table))
|
||||
if (const char* value = FindLabel(err, err_table))
|
||||
return value;
|
||||
}
|
||||
|
||||
@ -84,6 +97,7 @@ LoggingSeverity LogMessage::dbg_sev_ = LS_INFO;
|
||||
LoggingSeverity LogMessage::min_sev_ = LS_NONE;
|
||||
LoggingSeverity LogMessage::dbg_sev_ = LS_NONE;
|
||||
#endif // !_DEBUG
|
||||
bool LogMessage::log_to_stderr_ = true;
|
||||
|
||||
// Global lock for log subsystem, only needed to serialize access to streams_.
|
||||
CriticalSection LogMessage::crit_;
|
||||
@ -116,6 +130,8 @@ LogMessage::LogMessage(const char* file, int line, LoggingSeverity sev,
|
||||
print_stream_ << "[" << std::dec << id << "] ";
|
||||
}
|
||||
|
||||
print_stream_ << "(" << FilenameFromPath(file) << ":" << line << "): ";
|
||||
|
||||
if (err_ctx != ERRCTX_NONE) {
|
||||
std::ostringstream tmp;
|
||||
tmp << "[0x" << std::setfill('0') << std::hex << std::setw(8) << err << "]";
|
||||
@ -214,6 +230,10 @@ void LogMessage::LogToDebug(LoggingSeverity min_sev) {
|
||||
UpdateMinLogSeverity();
|
||||
}
|
||||
|
||||
void LogMessage::SetLogToStderr(bool log_to_stderr) {
|
||||
log_to_stderr_ = log_to_stderr;
|
||||
}
|
||||
|
||||
int LogMessage::GetLogToStream(LogSink* stream) {
|
||||
CritScope cs(&crit_);
|
||||
LoggingSeverity sev = LS_NONE;
|
||||
@ -314,7 +334,7 @@ void LogMessage::UpdateMinLogSeverity() EXCLUSIVE_LOCKS_REQUIRED(crit_) {
|
||||
|
||||
void LogMessage::OutputToDebug(const std::string& str,
|
||||
LoggingSeverity severity) {
|
||||
bool log_to_stderr = true;
|
||||
bool log_to_stderr = log_to_stderr_;
|
||||
#if defined(WEBRTC_MAC) && !defined(WEBRTC_IOS) && (!defined(DEBUG) || defined(NDEBUG))
|
||||
// On the Mac, all stderr output goes to the Console log and causes clutter.
|
||||
// So in opt builds, don't log to stderr unless the user specifically sets
|
||||
|
||||
@ -80,7 +80,7 @@ struct ConstantLabel { int value; const char * label; };
|
||||
#define TLABEL(x, y) { x, y }
|
||||
#define LASTLABEL { 0, 0 }
|
||||
|
||||
const char * FindLabel(int value, const ConstantLabel entries[]);
|
||||
const char* FindLabel(int value, const ConstantLabel entries[]);
|
||||
std::string ErrorName(int err, const ConstantLabel* err_table);
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
@ -163,6 +163,9 @@ class LogMessage {
|
||||
static void LogToDebug(LoggingSeverity min_sev);
|
||||
static LoggingSeverity GetLogToDebug() { return dbg_sev_; }
|
||||
|
||||
// Sets whether logs will be directed to stderr in debug mode.
|
||||
static void SetLogToStderr(bool log_to_stderr);
|
||||
|
||||
// Stream: Any non-blocking stream interface. LogMessage takes ownership of
|
||||
// the stream. Multiple streams may be specified by using AddLogToStream.
|
||||
// LogToStream is retained for backwards compatibility; when invoked, it
|
||||
@ -222,6 +225,9 @@ class LogMessage {
|
||||
// Flags for formatting options
|
||||
static bool thread_, timestamp_;
|
||||
|
||||
// Determines if logs will be directed to stderr in debug mode.
|
||||
static bool log_to_stderr_;
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(LogMessage);
|
||||
};
|
||||
|
||||
|
||||
@ -32,7 +32,8 @@ TraceLevel WebRtcSeverity(LoggingSeverity sev) {
|
||||
}
|
||||
}
|
||||
|
||||
const char* DescribeFile(const char* file) {
|
||||
// Return the filename portion of the string (that following the last slash).
|
||||
const char* FilenameFromPath(const char* file) {
|
||||
const char* end1 = ::strrchr(file, '/');
|
||||
const char* end2 = ::strrchr(file, '\\');
|
||||
if (!end1 && !end2)
|
||||
@ -45,7 +46,7 @@ const char* DescribeFile(const char* file) {
|
||||
|
||||
LogMessage::LogMessage(const char* file, int line, LoggingSeverity sev)
|
||||
: severity_(sev) {
|
||||
print_stream_ << "(" << DescribeFile(file) << ":" << line << "): ";
|
||||
print_stream_ << "(" << FilenameFromPath(file) << ":" << line << "): ";
|
||||
}
|
||||
|
||||
bool LogMessage::Loggable(LoggingSeverity sev) {
|
||||
|
||||
@ -13,6 +13,7 @@
|
||||
#include "gflags/gflags.h"
|
||||
#include "testing/gmock/include/gmock/gmock.h"
|
||||
#include "testing/gtest/include/gtest/gtest.h"
|
||||
#include "webrtc/base/logging.h"
|
||||
#include "webrtc/test/testsupport/fileutils.h"
|
||||
#include "webrtc/test/testsupport/trace_to_stderr.h"
|
||||
#include "webrtc/test/field_trial.h"
|
||||
@ -49,6 +50,7 @@ int TestSuite::Run() {
|
||||
}
|
||||
|
||||
void TestSuite::Initialize() {
|
||||
rtc::LogMessage::SetLogToStderr(FLAGS_logs);
|
||||
if (FLAGS_logs)
|
||||
trace_to_stderr_.reset(new TraceToStderr);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user