| Index: base/logging.cc
|
| diff --git a/base/logging.cc b/base/logging.cc
|
| index 49623bf555abfa0d7f09874f9b821bfa1e3fbd1b..3b783871c33fbf913313382cda10441b7342f95f 100644
|
| --- a/base/logging.cc
|
| +++ b/base/logging.cc
|
| @@ -85,15 +85,7 @@ const char* const log_severity_names[LOG_NUM_SEVERITIES] = {
|
|
|
| int min_log_level = 0;
|
|
|
| -// The default set here for logging_destination will only be used if
|
| -// InitLogging is not called. On Windows, use a file next to the exe;
|
| -// on POSIX platforms, where it may not even be possible to locate the
|
| -// executable on disk, use stderr.
|
| -#if defined(OS_WIN)
|
| -LoggingDestination logging_destination = LOG_ONLY_TO_FILE;
|
| -#elif defined(OS_POSIX)
|
| -LoggingDestination logging_destination = LOG_ONLY_TO_SYSTEM_DEBUG_LOG;
|
| -#endif
|
| +LoggingDestination logging_destination = LOG_DEFAULT;
|
|
|
| // For LOG_ERROR and above, always print to stderr.
|
| const int kAlwaysPrintErrorLevel = LOG_ERROR;
|
| @@ -323,8 +315,7 @@ bool InitializeLogFileHandle() {
|
| log_file_name = new PathString(GetDefaultLogFile());
|
| }
|
|
|
| - if (logging_destination == LOG_ONLY_TO_FILE ||
|
| - logging_destination == LOG_TO_BOTH_FILE_AND_SYSTEM_DEBUG_LOG) {
|
| + if ((logging_destination & LOG_TO_FILE) != 0) {
|
| #if defined(OS_WIN)
|
| log_file = CreateFile(log_file_name->c_str(), GENERIC_WRITE,
|
| FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
|
| @@ -352,17 +343,19 @@ bool InitializeLogFileHandle() {
|
|
|
| } // namespace
|
|
|
| +LoggingSettings::LoggingSettings()
|
| + : logging_dest(LOG_DEFAULT),
|
| + log_file(NULL),
|
| + lock_log(LOCK_LOG_FILE),
|
| + delete_old(APPEND_TO_OLD_LOG_FILE),
|
| + dcheck_state(DISABLE_DCHECK_FOR_NON_OFFICIAL_RELEASE_BUILDS) {}
|
|
|
| -bool BaseInitLoggingImpl(const PathChar* new_log_file,
|
| - LoggingDestination logging_dest,
|
| - LogLockingState lock_log,
|
| - OldFileDeletionState delete_old,
|
| - DcheckState dcheck_state) {
|
| +bool BaseInitLoggingImpl(const LoggingSettings& settings) {
|
| #if defined(OS_NACL)
|
| - CHECK(logging_dest == LOG_NONE ||
|
| - logging_dest == LOG_ONLY_TO_SYSTEM_DEBUG_LOG);
|
| + // Can log only to the system debug log.
|
| + CHECK_EQ(settings.logging_dest & ~LOG_TO_SYSTEM_DEBUG_LOG, 0);
|
| #endif
|
| - g_dcheck_state = dcheck_state;
|
| + g_dcheck_state = settings.dcheck_state;
|
| CommandLine* command_line = CommandLine::ForCurrentProcess();
|
| // Don't bother initializing g_vlog_info unless we use one of the
|
| // vlog switches.
|
| @@ -380,7 +373,7 @@ bool BaseInitLoggingImpl(const PathChar* new_log_file,
|
| &min_log_level);
|
| }
|
|
|
| - LoggingLock::Init(lock_log, new_log_file);
|
| + LoggingLock::Init(settings.lock_log, settings.log_file);
|
|
|
| LoggingLock logging_lock;
|
|
|
| @@ -391,17 +384,16 @@ bool BaseInitLoggingImpl(const PathChar* new_log_file,
|
| log_file = NULL;
|
| }
|
|
|
| - logging_destination = logging_dest;
|
| + logging_destination = settings.logging_dest;
|
|
|
| - // ignore file options if logging is disabled or only to system
|
| - if (logging_destination == LOG_NONE ||
|
| - logging_destination == LOG_ONLY_TO_SYSTEM_DEBUG_LOG)
|
| + // ignore file options unless logging to file is set.
|
| + if ((logging_destination & LOG_TO_FILE) == 0)
|
| return true;
|
|
|
| if (!log_file_name)
|
| log_file_name = new PathString();
|
| - *log_file_name = new_log_file;
|
| - if (delete_old == DELETE_OLD_LOG_FILE)
|
| + *log_file_name = settings.log_file;
|
| + if (settings.delete_old == DELETE_OLD_LOG_FILE)
|
| DeleteFilePath(*log_file_name);
|
|
|
| return InitializeLogFileHandle();
|
| @@ -578,14 +570,14 @@ LogMessage::~LogMessage() {
|
| std::string str_newline(stream_.str());
|
|
|
| // Give any log message handler first dibs on the message.
|
| - if (log_message_handler && log_message_handler(severity_, file_, line_,
|
| - message_start_, str_newline)) {
|
| + if (log_message_handler &&
|
| + log_message_handler(severity_, file_, line_,
|
| + message_start_, str_newline)) {
|
| // The handler took care of it, no further processing.
|
| return;
|
| }
|
|
|
| - if (logging_destination == LOG_ONLY_TO_SYSTEM_DEBUG_LOG ||
|
| - logging_destination == LOG_TO_BOTH_FILE_AND_SYSTEM_DEBUG_LOG) {
|
| + if ((logging_destination & LOG_TO_SYSTEM_DEBUG_LOG) != 0) {
|
| #if defined(OS_WIN)
|
| OutputDebugStringA(str_newline.c_str());
|
| #elif defined(OS_ANDROID)
|
| @@ -627,8 +619,7 @@ LogMessage::~LogMessage() {
|
| // thread at the beginning of execution.
|
| LoggingLock::Init(LOCK_LOG_FILE, NULL);
|
| // write to log file
|
| - if (logging_destination != LOG_NONE &&
|
| - logging_destination != LOG_ONLY_TO_SYSTEM_DEBUG_LOG) {
|
| + if ((logging_destination & LOG_TO_FILE) != 0) {
|
| LoggingLock logging_lock;
|
| if (InitializeLogFileHandle()) {
|
| #if defined(OS_WIN)
|
|
|