Expose more info from EventLoop and LogReader

Change-Id: I35c5903c4fc13ef29b1d055edb2593b8a440a220
diff --git a/aos/events/logging/logger.h b/aos/events/logging/logger.h
index 34dbd24..b1434ed 100644
--- a/aos/events/logging/logger.h
+++ b/aos/events/logging/logger.h
@@ -340,18 +340,25 @@
     RemapLoggedChannel(name, T::GetFullyQualifiedName(), add_prefix);
   }
 
+  template <typename T>
+  bool HasChannel(std::string_view name) {
+    return configuration::GetChannel(log_file_header()->configuration(), name,
+                                     T::GetFullyQualifiedName(), "",
+                                     nullptr) != nullptr;
+  }
+
   SimulatedEventLoopFactory *event_loop_factory() {
     return event_loop_factory_;
   }
 
+  const LogFileHeader *log_file_header() const {
+    return &log_file_header_.message();
+  }
+
  private:
   const Channel *RemapChannel(const EventLoop *event_loop,
                               const Channel *channel);
 
-  const LogFileHeader *log_file_header() const {
-    return &log_file_header_.message();
-  }
-
   // Queues at least max_out_of_order_duration_ messages into channels_.
   void QueueMessages();
   // Handle constructing a configuration with all the additional remapped