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 10namespace mojo { 11namespace internal { 12namespace { 13 14// We rely on log levels being the same numerically: 15COMPILE_ASSERT(logging::LOG_VERBOSE == MOJO_LOG_LEVEL_VERBOSE, 16 verbose_log_level_value_mismatch); 17COMPILE_ASSERT(logging::LOG_INFO == MOJO_LOG_LEVEL_INFO, 18 info_log_level_value_mismatch); 19COMPILE_ASSERT(logging::LOG_WARNING == MOJO_LOG_LEVEL_WARNING, 20 warning_log_level_value_mismatch); 21COMPILE_ASSERT(logging::LOG_ERROR == MOJO_LOG_LEVEL_ERROR, 22 error_log_level_value_mismatch); 23COMPILE_ASSERT(logging::LOG_FATAL == MOJO_LOG_LEVEL_FATAL, 24 fatal_log_level_value_mismatch); 25 26int MojoToChromiumLogLevel(MojoLogLevel log_level) { 27 // See the compile asserts above. 28 return static_cast<int>(log_level); 29} 30 31MojoLogLevel ChromiumToMojoLogLevel(int chromium_log_level) { 32 // See the compile asserts above. 33 return static_cast<MojoLogLevel>(chromium_log_level); 34} 35 36void 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 50MojoLogLevel GetMinimumLogLevel() { 51 return ChromiumToMojoLogLevel(logging::GetMinLogLevel()); 52} 53 54void SetMinimumLogLevel(MojoLogLevel log_level) { 55 logging::SetMinLogLevel(MojoToChromiumLogLevel(log_level)); 56} 57 58const MojoLogger kDefaultLogger = { 59 LogMessage, 60 GetMinimumLogLevel, 61 SetMinimumLogLevel 62}; 63 64} // namespace 65 66const MojoLogger* GetDefaultLoggerImpl() { 67 return &kDefaultLogger; 68} 69 70} // namespace internal 71} // namespace mojo 72