Put each log file in a folder

The filesystem was struggling.  If the path has a trailing /, then put
everything inside the folder.  Otherwise, use that as the base name and
append.

Change-Id: I042e4886989724c5e179fe81b3017a695cbfd016
diff --git a/aos/events/logging/log_namer.cc b/aos/events/logging/log_namer.cc
index 3067aea..474386e 100644
--- a/aos/events/logging/log_namer.cc
+++ b/aos/events/logging/log_namer.cc
@@ -244,7 +244,7 @@
 void MultiNodeLogNamer::OpenForwardedTimestampWriter(const Channel *channel,
                                                      DataWriter *data_writer) {
   std::string filename =
-      absl::StrCat("_timestamps", channel->name()->string_view(), "/",
+      absl::StrCat("timestamps", channel->name()->string_view(), "/",
                    channel->type()->string_view(), ".part",
                    data_writer->part_number, ".bfbs", extension_);
   CreateBufferWriter(filename, &data_writer->writer);
@@ -253,7 +253,7 @@
 void MultiNodeLogNamer::OpenWriter(const Channel *channel,
                                    DataWriter *data_writer) {
   const std::string filename = absl::StrCat(
-      "_", CHECK_NOTNULL(channel->source_node())->string_view(), "_data",
+      CHECK_NOTNULL(channel->source_node())->string_view(), "_data",
       channel->name()->string_view(), "/", channel->type()->string_view(),
       ".part", data_writer->part_number, ".bfbs", extension_);
   CreateBufferWriter(filename, &data_writer->writer);
@@ -262,9 +262,9 @@
 void MultiNodeLogNamer::OpenDataWriter() {
   std::string name;
   if (node() != nullptr) {
-    name = absl::StrCat(name, "_", node()->name()->string_view());
+    name = absl::StrCat(name, node()->name()->string_view(), "_");
   }
-  absl::StrAppend(&name, "_data.part", data_writer_.part_number, ".bfbs",
+  absl::StrAppend(&name, "data.part", data_writer_.part_number, ".bfbs",
                   extension_);
   CreateBufferWriter(name, &data_writer_.writer);
 }
@@ -277,7 +277,9 @@
     // means they're probably going to run out of space and get stuck too.
     return;
   }
-  const std::string filename = absl::StrCat(base_name_, path, temp_suffix_);
+  const std::string_view separator = base_name_.back() == '/' ? "" : "_";
+  const std::string filename =
+      absl::StrCat(base_name_, separator, path, temp_suffix_);
   if (!destination->get()) {
     if (ran_out_of_space_) {
       *destination = std::make_unique<DetachedBufferWriter>(
diff --git a/aos/events/logging/logger_main.cc b/aos/events/logging/logger_main.cc
index 1d0c55e..1bc74f2 100644
--- a/aos/events/logging/logger_main.cc
+++ b/aos/events/logging/logger_main.cc
@@ -28,8 +28,8 @@
         aos::logging::GetLogName("fbs_log"), event_loop.node());
   } else {
     log_namer = std::make_unique<aos::logger::MultiNodeLogNamer>(
-        aos::logging::GetLogName("fbs_log"), event_loop.configuration(),
-        event_loop.node());
+        absl::StrCat(aos::logging::GetLogName("fbs_log"), "/"),
+        event_loop.configuration(), event_loop.node());
   }
 
   aos::logger::Logger logger(&event_loop);
diff --git a/aos/logging/log_namer.cc b/aos/logging/log_namer.cc
index f025054..c1dd30a 100644
--- a/aos/logging/log_namer.cc
+++ b/aos/logging/log_namer.cc
@@ -146,11 +146,11 @@
   AllocateLogName(&tmp, folder, basename);
 
   std::string log_base_name = tmp;
-  std::string log_roborio_name = log_base_name + "_roborio_data.bfbs";
+  std::string log_roborio_name = log_base_name + "/";
   free(tmp);
 
   char *tmp2;
-  if (asprintf(&tmp2, "%s/%s-current.bfbs", folder, basename) == -1) {
+  if (asprintf(&tmp2, "%s/%s-current", folder, basename) == -1) {
     PLOG(WARNING) << "couldn't create current symlink name";
   } else {
     if (unlink(tmp2) == -1 && (errno != EROFS && errno != ENOENT)) {