Home | History | Annotate | Download | only in environment
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "mojo/environment/default_logger_impl.h"
      6 
      7 #include "base/logging.h"
      8 #include "base/macros.h"
      9 
     10 namespace mojo {
     11 namespace internal {
     12 namespace {
     13 
     14 // We rely on log levels being the same numerically:
     15 COMPILE_ASSERT(logging::LOG_VERBOSE == MOJO_LOG_LEVEL_VERBOSE,
     16                verbose_log_level_value_mismatch);
     17 COMPILE_ASSERT(logging::LOG_INFO == MOJO_LOG_LEVEL_INFO,
     18                info_log_level_value_mismatch);
     19 COMPILE_ASSERT(logging::LOG_WARNING == MOJO_LOG_LEVEL_WARNING,
     20                warning_log_level_value_mismatch);
     21 COMPILE_ASSERT(logging::LOG_ERROR == MOJO_LOG_LEVEL_ERROR,
     22                error_log_level_value_mismatch);
     23 COMPILE_ASSERT(logging::LOG_FATAL == MOJO_LOG_LEVEL_FATAL,
     24                fatal_log_level_value_mismatch);
     25 
     26 int MojoToChromiumLogLevel(MojoLogLevel log_level) {
     27   // See the compile asserts above.
     28   return static_cast<int>(log_level);
     29 }
     30 
     31 MojoLogLevel ChromiumToMojoLogLevel(int chromium_log_level) {
     32   // See the compile asserts above.
     33   return static_cast<MojoLogLevel>(chromium_log_level);
     34 }
     35 
     36 void LogMessage(MojoLogLevel log_level, const char* message) {
     37   int chromium_log_level = MojoToChromiumLogLevel(log_level);
     38   int chromium_min_log_level = logging::GetMinLogLevel();
     39   // "Fatal" errors aren't suppressable.
     40   DCHECK_LE(chromium_min_log_level, logging::LOG_FATAL);
     41   if (chromium_log_level < chromium_min_log_level)
     42     return;
     43 
     44   // TODO(vtl): Possibly, we should try to pull out the file and line number
     45   // from |message|.
     46   logging::LogMessage(__FILE__, __LINE__, chromium_log_level).stream()
     47       << message;
     48 }
     49 
     50 MojoLogLevel GetMinimumLogLevel() {
     51   return ChromiumToMojoLogLevel(logging::GetMinLogLevel());
     52 }
     53 
     54 void SetMinimumLogLevel(MojoLogLevel log_level) {
     55   logging::SetMinLogLevel(MojoToChromiumLogLevel(log_level));
     56 }
     57 
     58 const MojoLogger kDefaultLogger = {
     59   LogMessage,
     60   GetMinimumLogLevel,
     61   SetMinimumLogLevel
     62 };
     63 
     64 }  // namespace
     65 
     66 const MojoLogger* GetDefaultLoggerImpl() {
     67   return &kDefaultLogger;
     68 }
     69 
     70 }  // namespace internal
     71 }  // namespace mojo
     72