| Index: third_party/libjingle/overrides/talk/base/logging.h
|
| ===================================================================
|
| --- third_party/libjingle/overrides/talk/base/logging.h (revision 287779)
|
| +++ third_party/libjingle/overrides/talk/base/logging.h (working copy)
|
| @@ -1,215 +0,0 @@
|
| -// Copyright 2014 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -// This file overrides the logging macros in libjingle (talk/base/logging.h).
|
| -// Instead of using libjingle's logging implementation, the libjingle macros are
|
| -// mapped to the corresponding base/logging.h macro (chromium's VLOG).
|
| -// If this file is included outside of libjingle (e.g. in wrapper code) it
|
| -// should be included after base/logging.h (if any) or compiler error or
|
| -// unexpected behavior may occur (macros that have the same name in libjingle as
|
| -// in chromium will use the libjingle definition if this file is included
|
| -// first).
|
| -
|
| -// Setting the LoggingSeverity (and lower) that should be written to file should
|
| -// be done via command line by specifying the flags:
|
| -// --vmodule or --v please see base/logging.h for details on how to use them.
|
| -// Specifying what file to write to is done using InitLogging also in
|
| -// base/logging.h.
|
| -
|
| -// The macros and classes declared in here are not described as they are
|
| -// NOT TO BE USED outside of libjingle.
|
| -
|
| -#ifndef THIRD_PARTY_LIBJINGLE_OVERRIDES_TALK_BASE_LOGGING_H_
|
| -#define THIRD_PARTY_LIBJINGLE_OVERRIDES_TALK_BASE_LOGGING_H_
|
| -
|
| -#include <sstream>
|
| -#include <string>
|
| -
|
| -#include "base/logging.h"
|
| -#include "third_party/libjingle/source/talk/base/scoped_ref_ptr.h"
|
| -
|
| -namespace talk_base {
|
| -
|
| -///////////////////////////////////////////////////////////////////////////////
|
| -// ConstantLabel can be used to easily generate string names from constant
|
| -// values. This can be useful for logging descriptive names of error messages.
|
| -// Usage:
|
| -// const ConstantLabel LIBRARY_ERRORS[] = {
|
| -// KLABEL(SOME_ERROR),
|
| -// KLABEL(SOME_OTHER_ERROR),
|
| -// ...
|
| -// LASTLABEL
|
| -// }
|
| -//
|
| -// int err = LibraryFunc();
|
| -// LOG(LS_ERROR) << "LibraryFunc returned: "
|
| -// << ErrorName(err, LIBRARY_ERRORS);
|
| -
|
| -struct ConstantLabel {
|
| - int value;
|
| - const char* label;
|
| -};
|
| -#define KLABEL(x) { x, #x }
|
| -#define LASTLABEL { 0, 0 }
|
| -
|
| -const char* FindLabel(int value, const ConstantLabel entries[]);
|
| -std::string ErrorName(int err, const ConstantLabel* err_table);
|
| -
|
| -//////////////////////////////////////////////////////////////////////
|
| -// Note that the non-standard LoggingSeverity aliases exist because they are
|
| -// still in broad use. The meanings of the levels are:
|
| -// LS_SENSITIVE: Information which should only be logged with the consent
|
| -// of the user, due to privacy concerns.
|
| -// LS_VERBOSE: This level is for data which we do not want to appear in the
|
| -// normal debug log, but should appear in diagnostic logs.
|
| -// LS_INFO: Chatty level used in debugging for all sorts of things, the default
|
| -// in debug builds.
|
| -// LS_WARNING: Something that may warrant investigation.
|
| -// LS_ERROR: Something that should not have occurred.
|
| -// Note that LoggingSeverity is mapped over to chromiums verbosity levels where
|
| -// anything lower than or equal to the current verbosity level is written to
|
| -// file which is the opposite of logging severity in libjingle where higher
|
| -// severity numbers than or equal to the current severity level are written to
|
| -// file. Also, note that the values are explicitly defined here for convenience
|
| -// since the command line flag must be set using numerical values.
|
| -enum LoggingSeverity { LS_ERROR = 1,
|
| - LS_WARNING = 2,
|
| - LS_INFO = 3,
|
| - LS_VERBOSE = 4,
|
| - LS_SENSITIVE = 5,
|
| - INFO = LS_INFO,
|
| - WARNING = LS_WARNING,
|
| - LERROR = LS_ERROR };
|
| -
|
| -// LogErrorContext assists in interpreting the meaning of an error value.
|
| -enum LogErrorContext {
|
| - ERRCTX_NONE,
|
| - ERRCTX_ERRNO, // System-local errno
|
| - ERRCTX_HRESULT, // Windows HRESULT
|
| - ERRCTX_OSSTATUS, // MacOS OSStatus
|
| -
|
| - // Abbreviations for LOG_E macro
|
| - ERRCTX_EN = ERRCTX_ERRNO, // LOG_E(sev, EN, x)
|
| - ERRCTX_HR = ERRCTX_HRESULT, // LOG_E(sev, HR, x)
|
| - ERRCTX_OS = ERRCTX_OSSTATUS, // LOG_E(sev, OS, x)
|
| -};
|
| -
|
| -// Class that writes a log message to the logging delegate ("WebRTC logging
|
| -// stream" in Chrome) and to Chrome's logging stream.
|
| -class DiagnosticLogMessage {
|
| - public:
|
| - DiagnosticLogMessage(const char* file, int line, LoggingSeverity severity,
|
| - bool log_to_chrome, LogErrorContext err_ctx, int err);
|
| - DiagnosticLogMessage(const char* file, int line, LoggingSeverity severity,
|
| - bool log_to_chrome, LogErrorContext err_ctx, int err,
|
| - const char* module);
|
| - ~DiagnosticLogMessage();
|
| -
|
| - void CreateTimestamp();
|
| -
|
| - std::ostream& stream() { return print_stream_; }
|
| -
|
| - private:
|
| - const char* file_name_;
|
| - const int line_;
|
| - const LoggingSeverity severity_;
|
| - const bool log_to_chrome_;
|
| -
|
| - std::string extra_;
|
| -
|
| - std::ostringstream print_stream_;
|
| -};
|
| -
|
| -// This class is used to explicitly ignore values in the conditional
|
| -// logging macros. This avoids compiler warnings like "value computed
|
| -// is not used" and "statement has no effect".
|
| -class LogMessageVoidify {
|
| - public:
|
| - LogMessageVoidify() { }
|
| - // This has to be an operator with a precedence lower than << but
|
| - // higher than ?:
|
| - void operator&(std::ostream&) { }
|
| -};
|
| -
|
| -//////////////////////////////////////////////////////////////////////
|
| -// Logging Helpers
|
| -//////////////////////////////////////////////////////////////////////
|
| -
|
| -class LogMultilineState {
|
| - public:
|
| - size_t unprintable_count_[2];
|
| - LogMultilineState() {
|
| - unprintable_count_[0] = unprintable_count_[1] = 0;
|
| - }
|
| -};
|
| -
|
| -// When possible, pass optional state variable to track various data across
|
| -// multiple calls to LogMultiline. Otherwise, pass NULL.
|
| -void LogMultiline(LoggingSeverity level, const char* label, bool input,
|
| - const void* data, size_t len, bool hex_mode,
|
| - LogMultilineState* state);
|
| -
|
| -// TODO(grunell): Change name to InitDiagnosticLoggingDelegate or
|
| -// InitDiagnosticLogging. Change also in init_webrtc.h/cc.
|
| -// TODO(grunell): typedef the delegate function.
|
| -void InitDiagnosticLoggingDelegateFunction(
|
| - void (*delegate)(const std::string&));
|
| -
|
| -void SetExtraLoggingInit(
|
| - void (*function)(void (*delegate)(const std::string&)));
|
| -} // namespace talk_base
|
| -
|
| -//////////////////////////////////////////////////////////////////////
|
| -// Libjingle macros which are mapped over to their VLOG equivalent in
|
| -// base/logging.h
|
| -//////////////////////////////////////////////////////////////////////
|
| -
|
| -#if defined(LOGGING_INSIDE_LIBJINGLE)
|
| -
|
| -#define DIAGNOSTIC_LOG(sev, ctx, err, ...) \
|
| - talk_base::DiagnosticLogMessage( \
|
| - __FILE__, __LINE__, sev, VLOG_IS_ON(sev), \
|
| - talk_base::ERRCTX_ ## ctx, err, ##__VA_ARGS__).stream()
|
| -
|
| -#define LOG_CHECK_LEVEL(sev) VLOG_IS_ON(talk_base::sev)
|
| -#define LOG_CHECK_LEVEL_V(sev) VLOG_IS_ON(sev)
|
| -
|
| -#define LOG_V(sev) DIAGNOSTIC_LOG(sev, NONE, 0)
|
| -#undef LOG
|
| -#define LOG(sev) DIAGNOSTIC_LOG(talk_base::sev, NONE, 0)
|
| -
|
| -// The _F version prefixes the message with the current function name.
|
| -#if defined(__GNUC__) && defined(_DEBUG)
|
| -#define LOG_F(sev) LOG(sev) << __PRETTY_FUNCTION__ << ": "
|
| -#else
|
| -#define LOG_F(sev) LOG(sev) << __FUNCTION__ << ": "
|
| -#endif
|
| -
|
| -#define LOG_E(sev, ctx, err, ...) \
|
| - DIAGNOSTIC_LOG(talk_base::sev, ctx, err, ##__VA_ARGS__)
|
| -
|
| -#undef LOG_ERRNO_EX
|
| -#define LOG_ERRNO_EX(sev, err) LOG_E(sev, ERRNO, err)
|
| -#undef LOG_ERRNO
|
| -#define LOG_ERRNO(sev) LOG_ERRNO_EX(sev, errno)
|
| -
|
| -#if defined(OS_WIN)
|
| -#define LOG_GLE_EX(sev, err) LOG_E(sev, HRESULT, err)
|
| -#define LOG_GLE(sev) LOG_GLE_EX(sev, GetLastError())
|
| -#define LOG_GLEM(sev, mod) LOG_E(sev, HRESULT, GetLastError(), mod)
|
| -#define LOG_ERR_EX(sev, err) LOG_GLE_EX(sev, err)
|
| -#define LOG_ERR(sev) LOG_GLE(sev)
|
| -#define LAST_SYSTEM_ERROR (::GetLastError())
|
| -#else
|
| -#define LOG_ERR_EX(sev, err) LOG_ERRNO_EX(sev, err)
|
| -#define LOG_ERR(sev) LOG_ERRNO(sev)
|
| -#define LAST_SYSTEM_ERROR (errno)
|
| -#endif // OS_WIN
|
| -
|
| -#undef PLOG
|
| -#define PLOG(sev, err) LOG_ERR_EX(sev, err)
|
| -
|
| -#endif // LOGGING_INSIDE_LIBJINGLE
|
| -
|
| -#endif // THIRD_PARTY_LIBJINGLE_OVERRIDES_TALK_BASE_LOGGING_H_
|
|
|