|  | // Copyright 2015 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. | 
|  |  | 
|  | #include "mojo/logging/init_logging.h" | 
|  |  | 
|  | #include "base/command_line.h" | 
|  | #include "base/logging.h" | 
|  |  | 
|  | namespace mojo { | 
|  | namespace { | 
|  |  | 
|  | ::logging::LoggingDestination DetermineLogMode( | 
|  | const base::CommandLine& command_line) { | 
|  | // only use OutputDebugString in debug mode | 
|  | #if defined(NDEBUG) | 
|  | bool enable_logging = false; | 
|  | const char* kInvertLoggingSwitch = "enable-logging"; | 
|  | #else | 
|  | bool enable_logging = true; | 
|  | const char* kInvertLoggingSwitch = "disable-logging"; | 
|  | #endif | 
|  | const ::logging::LoggingDestination kDefaultLoggingMode = | 
|  | ::logging::LOG_TO_SYSTEM_DEBUG_LOG; | 
|  |  | 
|  | if (command_line.HasSwitch(kInvertLoggingSwitch)) | 
|  | enable_logging = !enable_logging; | 
|  |  | 
|  | return enable_logging ? kDefaultLoggingMode : ::logging::LOG_NONE; | 
|  | } | 
|  |  | 
|  | }  // namespace | 
|  |  | 
|  | void InitLogging() { | 
|  | ::logging::LoggingSettings settings; | 
|  | settings.logging_dest = DetermineLogMode( | 
|  | *base::CommandLine::ForCurrentProcess()); | 
|  | ::logging::InitLogging(settings); | 
|  |  | 
|  | // we want process and thread IDs because we have a lot of things running | 
|  | ::logging::SetLogItems(true,  // enable_process_id | 
|  | true,  // enable_thread_id | 
|  | true,  // enable_timestamp | 
|  | false);  // enable_tickcount | 
|  | } | 
|  |  | 
|  | }  // namespace mojo |