diff --git a/aos/logging/interface.cc b/aos/logging/interface.cc
index b72f8e1..e6e9203 100644
--- a/aos/logging/interface.cc
+++ b/aos/logging/interface.cc
@@ -4,8 +4,8 @@
 #include <stdio.h>
 #include <string.h>
 
-#include <type_traits>
 #include <functional>
+#include <type_traits>
 
 #include "aos/die.h"
 #include "aos/logging/context.h"
@@ -21,8 +21,8 @@
   const int ret = vsnprintf(output, size, format, ap);
   typedef ::std::common_type<int, size_t>::type RetType;
   if (ret < 0) {
-    AOS_PLOG(FATAL, "vsnprintf(%p, %zd, %s, args) failed",
-         output, size, format);
+    AOS_PLOG(FATAL, "vsnprintf(%p, %zd, %s, args) failed", output, size,
+             format);
   } else if (static_cast<RetType>(ret) >= static_cast<RetType>(size)) {
     // Overwrite the '\0' at the end of the existing data and
     // copy in the one on the end of continued.
@@ -32,30 +32,22 @@
 }
 
 void RunWithCurrentImplementation(
-    int levels, ::std::function<void(LogImplementation *)> function) {
+    ::std::function<void(LogImplementation *)> function) {
   Context *context = Context::Get();
 
-  LogImplementation *const top_implementation = context->implementation;
-  LogImplementation *new_implementation = top_implementation;
-  LogImplementation *implementation = NULL;
-  for (int i = 0; i < levels; ++i) {
-    implementation = new_implementation;
-    if (new_implementation == NULL) {
-      Die("no logging implementation to use\n");
-    }
-    new_implementation = new_implementation->next();
+  LogImplementation *const implementation = context->implementation;
+  if (implementation == NULL) {
+    Die("no logging implementation to use\n");
   }
-  context->implementation = new_implementation;
   function(implementation);
-  context->implementation = top_implementation;
 }
 
 }  // namespace internal
 
 using internal::Context;
 
-void LogImplementation::DoVLog(log_level level, const char *format, va_list ap,
-                               int levels) {
+void LogImplementation::DoVLog(log_level level, const char *format,
+                               va_list ap) {
   auto log_impl = [&](LogImplementation *implementation) {
     va_list ap1;
     va_copy(ap1, ap);
@@ -66,11 +58,11 @@
       VDie(format, ap);
     }
   };
-  internal::RunWithCurrentImplementation(levels, ::std::ref(log_impl));
+  internal::RunWithCurrentImplementation(::std::ref(log_impl));
 }
 
 void VLog(log_level level, const char *format, va_list ap) {
-  LogImplementation::DoVLog(level, format, ap, 1);
+  LogImplementation::DoVLog(level, format, ap);
 }
 
 void VCork(int line, const char *function, const char *format, va_list ap) {
@@ -101,9 +93,8 @@
 
   VCork(line, function, format, ap);
 
-  log_do(level, "%s: %d-%d: %s: %s", file,
-         context->cork_data.line_min, context->cork_data.line_max, function,
-         context->cork_data.message);
+  log_do(level, "%s: %d-%d: %s: %s", file, context->cork_data.line_min,
+         context->cork_data.line_max, function, context->cork_data.message);
 
   context->cork_data.Reset();
 }
