Index: mojo/environment/default_logger_impl.cc |
diff --git a/mojo/environment/default_logger_impl.cc b/mojo/environment/default_logger_impl.cc |
index a2b06198a3c4d8aca090cedf1e08ff4375867349..76f76f4a27da970f16f242a048d26d586678979a 100644 |
--- a/mojo/environment/default_logger_impl.cc |
+++ b/mojo/environment/default_logger_impl.cc |
@@ -11,29 +11,49 @@ namespace mojo { |
namespace internal { |
namespace { |
-int GetChromiumLogLevel(MojoLogLevel log_level) { |
- // Our log levels correspond, except for "fatal": |
- COMPILE_ASSERT(logging::LOG_VERBOSE == MOJO_LOG_LEVEL_VERBOSE, |
- verbose_log_level_value_mismatch); |
- COMPILE_ASSERT(logging::LOG_INFO == MOJO_LOG_LEVEL_INFO, |
- info_log_level_value_mismatch); |
- COMPILE_ASSERT(logging::LOG_WARNING == MOJO_LOG_LEVEL_WARNING, |
- warning_log_level_value_mismatch); |
- COMPILE_ASSERT(logging::LOG_ERROR == MOJO_LOG_LEVEL_ERROR, |
- error_log_level_value_mismatch); |
- |
- return (log_level >= MOJO_LOG_LEVEL_FATAL) ? logging::LOG_FATAL : log_level; |
+// We rely on log levels being the same numerically: |
+COMPILE_ASSERT(logging::LOG_VERBOSE == MOJO_LOG_LEVEL_VERBOSE, |
+ verbose_log_level_value_mismatch); |
+COMPILE_ASSERT(logging::LOG_INFO == MOJO_LOG_LEVEL_INFO, |
+ info_log_level_value_mismatch); |
+COMPILE_ASSERT(logging::LOG_WARNING == MOJO_LOG_LEVEL_WARNING, |
+ warning_log_level_value_mismatch); |
+COMPILE_ASSERT(logging::LOG_ERROR == MOJO_LOG_LEVEL_ERROR, |
+ error_log_level_value_mismatch); |
+COMPILE_ASSERT(logging::LOG_FATAL == MOJO_LOG_LEVEL_FATAL, |
+ fatal_log_level_value_mismatch); |
+ |
+int MojoToChromiumLogLevel(MojoLogLevel log_level) { |
+ // See the compile asserts above. |
+ return static_cast<int>(log_level); |
+} |
+ |
+MojoLogLevel ChromiumToMojoLogLevel(int chromium_log_level) { |
+ // See the compile asserts above. |
+ return static_cast<MojoLogLevel>(chromium_log_level); |
} |
void LogMessage(MojoLogLevel log_level, const char* message) { |
+ int chromium_log_level = MojoToChromiumLogLevel(log_level); |
+ int chromium_min_log_level = logging::GetMinLogLevel(); |
+ // "Fatal" errors aren't suppressable. |
+ DCHECK_LE(chromium_min_log_level, logging::LOG_FATAL); |
+ if (chromium_log_level < chromium_min_log_level) |
+ return; |
+ |
// TODO(vtl): Possibly, we should try to pull out the file and line number |
// from |message|. |
- logging::LogMessage(__FILE__, __LINE__, |
- GetChromiumLogLevel(log_level)).stream() << message; |
+ logging::LogMessage(__FILE__, __LINE__, chromium_log_level).stream() |
+ << message; |
+} |
+ |
+MojoLogLevel GetMinimumLogLevel() { |
+ return ChromiumToMojoLogLevel(logging::GetMinLogLevel()); |
} |
const MojoLogger kDefaultLogger = { |
- LogMessage |
+ LogMessage, |
+ GetMinimumLogLevel |
}; |
} // namespace |