| OLD | NEW |
| 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 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 132 // Virtual sink interface that can receive log messages. | 132 // Virtual sink interface that can receive log messages. |
| 133 class LogSink { | 133 class LogSink { |
| 134 public: | 134 public: |
| 135 LogSink() {} | 135 LogSink() {} |
| 136 virtual ~LogSink() {} | 136 virtual ~LogSink() {} |
| 137 virtual void OnLogMessage(const std::string& message) = 0; | 137 virtual void OnLogMessage(const std::string& message) = 0; |
| 138 }; | 138 }; |
| 139 | 139 |
| 140 class LogMessage { | 140 class LogMessage { |
| 141 public: | 141 public: |
| 142 LogMessage(const char* file, int line, LoggingSeverity sev, | 142 LogMessage(const char* file, |
| 143 LogErrorContext err_ctx = ERRCTX_NONE, int err = 0, | 143 int line, |
| 144 const char* module = NULL); | 144 LoggingSeverity sev, |
| 145 LogErrorContext err_ctx = ERRCTX_NONE, |
| 146 int err = 0, |
| 147 const char* module = nullptr); |
| 145 | 148 |
| 146 LogMessage(const char* file, | 149 LogMessage(const char* file, |
| 147 int line, | 150 int line, |
| 148 LoggingSeverity sev, | 151 LoggingSeverity sev, |
| 149 const std::string& tag); | 152 const std::string& tag); |
| 150 | 153 |
| 151 ~LogMessage(); | 154 ~LogMessage(); |
| 152 | 155 |
| 153 static inline bool Loggable(LoggingSeverity sev) { return (sev >= min_sev_); } | 156 static inline bool Loggable(LoggingSeverity sev) { return (sev >= min_sev_); } |
| 154 std::ostream& stream() { return print_stream_; } | 157 std::ostream& stream() { return print_stream_; } |
| (...skipping 23 matching lines...) Expand all Loading... |
| 178 // Sets whether logs will be directed to stderr in debug mode. | 181 // Sets whether logs will be directed to stderr in debug mode. |
| 179 static void SetLogToStderr(bool log_to_stderr); | 182 static void SetLogToStderr(bool log_to_stderr); |
| 180 | 183 |
| 181 // Stream: Any non-blocking stream interface. LogMessage takes ownership of | 184 // Stream: Any non-blocking stream interface. LogMessage takes ownership of |
| 182 // the stream. Multiple streams may be specified by using AddLogToStream. | 185 // the stream. Multiple streams may be specified by using AddLogToStream. |
| 183 // LogToStream is retained for backwards compatibility; when invoked, it | 186 // LogToStream is retained for backwards compatibility; when invoked, it |
| 184 // will discard any previously set streams and install the specified stream. | 187 // will discard any previously set streams and install the specified stream. |
| 185 // GetLogToStream gets the severity for the specified stream, of if none | 188 // GetLogToStream gets the severity for the specified stream, of if none |
| 186 // is specified, the minimum stream severity. | 189 // is specified, the minimum stream severity. |
| 187 // RemoveLogToStream removes the specified stream, without destroying it. | 190 // RemoveLogToStream removes the specified stream, without destroying it. |
| 188 static int GetLogToStream(LogSink* stream = NULL); | 191 static int GetLogToStream(LogSink* stream = nullptr); |
| 189 static void AddLogToStream(LogSink* stream, LoggingSeverity min_sev); | 192 static void AddLogToStream(LogSink* stream, LoggingSeverity min_sev); |
| 190 static void RemoveLogToStream(LogSink* stream); | 193 static void RemoveLogToStream(LogSink* stream); |
| 191 | 194 |
| 192 // Testing against MinLogSeverity allows code to avoid potentially expensive | 195 // Testing against MinLogSeverity allows code to avoid potentially expensive |
| 193 // logging operations by pre-checking the logging level. | 196 // logging operations by pre-checking the logging level. |
| 194 static int GetMinLogSeverity() { return min_sev_; } | 197 static int GetMinLogSeverity() { return min_sev_; } |
| 195 | 198 |
| 196 // Parses the provided parameter stream to configure the options above. | 199 // Parses the provided parameter stream to configure the options above. |
| 197 // Useful for configuring logging from the command line. | 200 // Useful for configuring logging from the command line. |
| 198 static void ConfigureLogging(const char* params); | 201 static void ConfigureLogging(const char* params); |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 247 | 250 |
| 248 class LogMultilineState { | 251 class LogMultilineState { |
| 249 public: | 252 public: |
| 250 size_t unprintable_count_[2]; | 253 size_t unprintable_count_[2]; |
| 251 LogMultilineState() { | 254 LogMultilineState() { |
| 252 unprintable_count_[0] = unprintable_count_[1] = 0; | 255 unprintable_count_[0] = unprintable_count_[1] = 0; |
| 253 } | 256 } |
| 254 }; | 257 }; |
| 255 | 258 |
| 256 // When possible, pass optional state variable to track various data across | 259 // When possible, pass optional state variable to track various data across |
| 257 // multiple calls to LogMultiline. Otherwise, pass NULL. | 260 // multiple calls to LogMultiline. Otherwise, pass null. |
| 258 void LogMultiline(LoggingSeverity level, const char* label, bool input, | 261 void LogMultiline(LoggingSeverity level, const char* label, bool input, |
| 259 const void* data, size_t len, bool hex_mode, | 262 const void* data, size_t len, bool hex_mode, |
| 260 LogMultilineState* state); | 263 LogMultilineState* state); |
| 261 | 264 |
| 262 #ifndef LOG | 265 #ifndef LOG |
| 263 | 266 |
| 264 // The following non-obvious technique for implementation of a | 267 // The following non-obvious technique for implementation of a |
| 265 // conditional log stream was stolen from google3/base/logging.h. | 268 // conditional log stream was stolen from google3/base/logging.h. |
| 266 | 269 |
| 267 // This class is used to explicitly ignore values in the conditional | 270 // This class is used to explicitly ignore values in the conditional |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 344 (0) | 347 (0) |
| 345 #elif defined(WEBRTC_POSIX) | 348 #elif defined(WEBRTC_POSIX) |
| 346 #define LOG_ERR_EX(sev, err) \ | 349 #define LOG_ERR_EX(sev, err) \ |
| 347 LOG_ERRNO_EX(sev, err) | 350 LOG_ERRNO_EX(sev, err) |
| 348 #define LOG_ERR(sev) \ | 351 #define LOG_ERR(sev) \ |
| 349 LOG_ERRNO(sev) | 352 LOG_ERRNO(sev) |
| 350 #define LAST_SYSTEM_ERROR \ | 353 #define LAST_SYSTEM_ERROR \ |
| 351 (errno) | 354 (errno) |
| 352 #endif // WEBRTC_WIN | 355 #endif // WEBRTC_WIN |
| 353 | 356 |
| 354 #define LOG_TAG(sev, tag) \ | 357 #define LOG_TAG(sev, tag) \ |
| 355 LOG_SEVERITY_PRECONDITION(sev) \ | 358 LOG_SEVERITY_PRECONDITION(sev) \ |
| 356 rtc::LogMessage(NULL, 0, sev, tag).stream() | 359 rtc::LogMessage(nullptr, 0, sev, tag).stream() |
| 357 | 360 |
| 358 #define PLOG(sev, err) \ | 361 #define PLOG(sev, err) \ |
| 359 LOG_ERR_EX(sev, err) | 362 LOG_ERR_EX(sev, err) |
| 360 | 363 |
| 361 // TODO(?): Add an "assert" wrapper that logs in the same manner. | 364 // TODO(?): Add an "assert" wrapper that logs in the same manner. |
| 362 | 365 |
| 363 #endif // LOG | 366 #endif // LOG |
| 364 | 367 |
| 365 } // namespace rtc | 368 } // namespace rtc |
| 366 | 369 |
| 367 #endif // WEBRTC_BASE_LOGGING_H_ | 370 #endif // WEBRTC_BASE_LOGGING_H_ |
| OLD | NEW |