Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(75)

Side by Side Diff: webrtc/base/logging.cc

Issue 1331503002: Disable base/logging.h stderr logs by default for webrtc/ tests. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « webrtc/base/logging.h ('k') | webrtc/system_wrappers/source/logging.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2004 The WebRTC Project Authors. All rights reserved. 2 * Copyright 2004 The WebRTC Project Authors. All rights reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 26 matching lines...) Expand all
37 #include <vector> 37 #include <vector>
38 38
39 #include "webrtc/base/logging.h" 39 #include "webrtc/base/logging.h"
40 #include "webrtc/base/platform_thread.h" 40 #include "webrtc/base/platform_thread.h"
41 #include "webrtc/base/scoped_ptr.h" 41 #include "webrtc/base/scoped_ptr.h"
42 #include "webrtc/base/stringencode.h" 42 #include "webrtc/base/stringencode.h"
43 #include "webrtc/base/stringutils.h" 43 #include "webrtc/base/stringutils.h"
44 #include "webrtc/base/timeutils.h" 44 #include "webrtc/base/timeutils.h"
45 45
46 namespace rtc { 46 namespace rtc {
47 namespace {
48
49 // Return the filename portion of the string (that following the last slash).
50 const char* FilenameFromPath(const char* file) {
51 const char* end1 = ::strrchr(file, '/');
52 const char* end2 = ::strrchr(file, '\\');
53 if (!end1 && !end2)
54 return file;
55 else
56 return (end1 > end2) ? end1 + 1 : end2 + 1;
57 }
58
59 } // namespace
47 60
48 ///////////////////////////////////////////////////////////////////////////// 61 /////////////////////////////////////////////////////////////////////////////
49 // Constant Labels 62 // Constant Labels
50 ///////////////////////////////////////////////////////////////////////////// 63 /////////////////////////////////////////////////////////////////////////////
51 64
52 const char * FindLabel(int value, const ConstantLabel entries[]) { 65 const char* FindLabel(int value, const ConstantLabel entries[]) {
53 for (int i = 0; entries[i].label; ++i) { 66 for (int i = 0; entries[i].label; ++i) {
54 if (value == entries[i].value) { 67 if (value == entries[i].value) {
55 return entries[i].label; 68 return entries[i].label;
56 } 69 }
57 } 70 }
58 return 0; 71 return 0;
59 } 72 }
60 73
61 std::string ErrorName(int err, const ConstantLabel * err_table) { 74 std::string ErrorName(int err, const ConstantLabel* err_table) {
62 if (err == 0) 75 if (err == 0)
63 return "No error"; 76 return "No error";
64 77
65 if (err_table != 0) { 78 if (err_table != 0) {
66 if (const char * value = FindLabel(err, err_table)) 79 if (const char* value = FindLabel(err, err_table))
67 return value; 80 return value;
68 } 81 }
69 82
70 char buffer[16]; 83 char buffer[16];
71 snprintf(buffer, sizeof(buffer), "0x%08x", err); 84 snprintf(buffer, sizeof(buffer), "0x%08x", err);
72 return buffer; 85 return buffer;
73 } 86 }
74 87
75 ///////////////////////////////////////////////////////////////////////////// 88 /////////////////////////////////////////////////////////////////////////////
76 // LogMessage 89 // LogMessage
77 ///////////////////////////////////////////////////////////////////////////// 90 /////////////////////////////////////////////////////////////////////////////
78 91
79 // By default, release builds don't log, debug builds at info level 92 // By default, release builds don't log, debug builds at info level
80 #if _DEBUG 93 #if _DEBUG
81 LoggingSeverity LogMessage::min_sev_ = LS_INFO; 94 LoggingSeverity LogMessage::min_sev_ = LS_INFO;
82 LoggingSeverity LogMessage::dbg_sev_ = LS_INFO; 95 LoggingSeverity LogMessage::dbg_sev_ = LS_INFO;
83 #else // !_DEBUG 96 #else // !_DEBUG
84 LoggingSeverity LogMessage::min_sev_ = LS_NONE; 97 LoggingSeverity LogMessage::min_sev_ = LS_NONE;
85 LoggingSeverity LogMessage::dbg_sev_ = LS_NONE; 98 LoggingSeverity LogMessage::dbg_sev_ = LS_NONE;
86 #endif // !_DEBUG 99 #endif // !_DEBUG
100 bool LogMessage::log_to_stderr_ = true;
87 101
88 // Global lock for log subsystem, only needed to serialize access to streams_. 102 // Global lock for log subsystem, only needed to serialize access to streams_.
89 CriticalSection LogMessage::crit_; 103 CriticalSection LogMessage::crit_;
90 104
91 // The list of logging streams currently configured. 105 // The list of logging streams currently configured.
92 // Note: we explicitly do not clean this up, because of the uncertain ordering 106 // Note: we explicitly do not clean this up, because of the uncertain ordering
93 // of destructors at program exit. Let the person who sets the stream trigger 107 // of destructors at program exit. Let the person who sets the stream trigger
94 // cleanup by setting to NULL, or let it leak (safe at program exit). 108 // cleanup by setting to NULL, or let it leak (safe at program exit).
95 LogMessage::StreamList LogMessage::streams_ GUARDED_BY(LogMessage::crit_); 109 LogMessage::StreamList LogMessage::streams_ GUARDED_BY(LogMessage::crit_);
96 110
(...skipping 12 matching lines...) Expand all
109 print_stream_ << "[" << std::setfill('0') << std::setw(3) << (time / 1000) 123 print_stream_ << "[" << std::setfill('0') << std::setw(3) << (time / 1000)
110 << ":" << std::setw(3) << (time % 1000) << std::setfill(' ') 124 << ":" << std::setw(3) << (time % 1000) << std::setfill(' ')
111 << "] "; 125 << "] ";
112 } 126 }
113 127
114 if (thread_) { 128 if (thread_) {
115 PlatformThreadId id = CurrentThreadId(); 129 PlatformThreadId id = CurrentThreadId();
116 print_stream_ << "[" << std::dec << id << "] "; 130 print_stream_ << "[" << std::dec << id << "] ";
117 } 131 }
118 132
133 print_stream_ << "(" << FilenameFromPath(file) << ":" << line << "): ";
134
119 if (err_ctx != ERRCTX_NONE) { 135 if (err_ctx != ERRCTX_NONE) {
120 std::ostringstream tmp; 136 std::ostringstream tmp;
121 tmp << "[0x" << std::setfill('0') << std::hex << std::setw(8) << err << "]"; 137 tmp << "[0x" << std::setfill('0') << std::hex << std::setw(8) << err << "]";
122 switch (err_ctx) { 138 switch (err_ctx) {
123 case ERRCTX_ERRNO: 139 case ERRCTX_ERRNO:
124 tmp << " " << strerror(err); 140 tmp << " " << strerror(err);
125 break; 141 break;
126 #if WEBRTC_WIN 142 #if WEBRTC_WIN
127 case ERRCTX_HRESULT: { 143 case ERRCTX_HRESULT: {
128 char msgbuf[256]; 144 char msgbuf[256];
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 void LogMessage::LogTimestamps(bool on) { 223 void LogMessage::LogTimestamps(bool on) {
208 timestamp_ = on; 224 timestamp_ = on;
209 } 225 }
210 226
211 void LogMessage::LogToDebug(LoggingSeverity min_sev) { 227 void LogMessage::LogToDebug(LoggingSeverity min_sev) {
212 dbg_sev_ = min_sev; 228 dbg_sev_ = min_sev;
213 CritScope cs(&crit_); 229 CritScope cs(&crit_);
214 UpdateMinLogSeverity(); 230 UpdateMinLogSeverity();
215 } 231 }
216 232
233 void LogMessage::SetLogToStderr(bool log_to_stderr) {
234 log_to_stderr_ = log_to_stderr;
Andrew MacDonald 2015/09/05 05:32:18 My intuition is to protect this with the mutex, bu
hlundin-webrtc 2015/09/06 10:10:44 Acknowledged.
235 }
236
217 int LogMessage::GetLogToStream(LogSink* stream) { 237 int LogMessage::GetLogToStream(LogSink* stream) {
218 CritScope cs(&crit_); 238 CritScope cs(&crit_);
219 LoggingSeverity sev = LS_NONE; 239 LoggingSeverity sev = LS_NONE;
220 for (StreamList::iterator it = streams_.begin(); it != streams_.end(); ++it) { 240 for (StreamList::iterator it = streams_.begin(); it != streams_.end(); ++it) {
221 if (!stream || stream == it->first) { 241 if (!stream || stream == it->first) {
222 sev = std::min(sev, it->second); 242 sev = std::min(sev, it->second);
223 } 243 }
224 } 244 }
225 return sev; 245 return sev;
226 } 246 }
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
307 void LogMessage::UpdateMinLogSeverity() EXCLUSIVE_LOCKS_REQUIRED(crit_) { 327 void LogMessage::UpdateMinLogSeverity() EXCLUSIVE_LOCKS_REQUIRED(crit_) {
308 LoggingSeverity min_sev = dbg_sev_; 328 LoggingSeverity min_sev = dbg_sev_;
309 for (StreamList::iterator it = streams_.begin(); it != streams_.end(); ++it) { 329 for (StreamList::iterator it = streams_.begin(); it != streams_.end(); ++it) {
310 min_sev = std::min(dbg_sev_, it->second); 330 min_sev = std::min(dbg_sev_, it->second);
311 } 331 }
312 min_sev_ = min_sev; 332 min_sev_ = min_sev;
313 } 333 }
314 334
315 void LogMessage::OutputToDebug(const std::string& str, 335 void LogMessage::OutputToDebug(const std::string& str,
316 LoggingSeverity severity) { 336 LoggingSeverity severity) {
317 bool log_to_stderr = true; 337 bool log_to_stderr = log_to_stderr_;
318 #if defined(WEBRTC_MAC) && !defined(WEBRTC_IOS) && (!defined(DEBUG) || defined(N DEBUG)) 338 #if defined(WEBRTC_MAC) && !defined(WEBRTC_IOS) && (!defined(DEBUG) || defined(N DEBUG))
319 // On the Mac, all stderr output goes to the Console log and causes clutter. 339 // On the Mac, all stderr output goes to the Console log and causes clutter.
320 // So in opt builds, don't log to stderr unless the user specifically sets 340 // So in opt builds, don't log to stderr unless the user specifically sets
321 // a preference to do so. 341 // a preference to do so.
322 CFStringRef key = CFStringCreateWithCString(kCFAllocatorDefault, 342 CFStringRef key = CFStringCreateWithCString(kCFAllocatorDefault,
323 "logToStdErr", 343 "logToStdErr",
324 kCFStringEncodingUTF8); 344 kCFStringEncodingUTF8);
325 CFStringRef domain = CFBundleGetIdentifier(CFBundleGetMainBundle()); 345 CFStringRef domain = CFBundleGetIdentifier(CFBundleGetMainBundle());
326 if (key != NULL && domain != NULL) { 346 if (key != NULL && domain != NULL) {
327 Boolean exists_and_is_valid; 347 Boolean exists_and_is_valid;
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
522 } 542 }
523 543
524 if (state) { 544 if (state) {
525 state->unprintable_count_[input] = consecutive_unprintable; 545 state->unprintable_count_[input] = consecutive_unprintable;
526 } 546 }
527 } 547 }
528 548
529 ////////////////////////////////////////////////////////////////////// 549 //////////////////////////////////////////////////////////////////////
530 550
531 } // namespace rtc 551 } // namespace rtc
OLDNEW
« no previous file with comments | « webrtc/base/logging.h ('k') | webrtc/system_wrappers/source/logging.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698