diff --git a/aos/linux_code/logging/binary_log_writer.cc b/aos/linux_code/logging/binary_log_writer.cc
index 67cb166..2be484a 100644
--- a/aos/linux_code/logging/binary_log_writer.cc
+++ b/aos/linux_code/logging/binary_log_writer.cc
@@ -8,6 +8,7 @@
 #include <sys/types.h>
 #include <pwd.h>
 #include <fcntl.h>
+#include <dirent.h>
 
 #include <map>
 #include <unordered_set>
@@ -17,6 +18,7 @@
 #include "aos/linux_code/init.h"
 #include "aos/linux_code/configuration.h"
 #include "aos/common/queue_types.h"
+#include "aos/common/die.h"
 
 namespace aos {
 namespace logging {
@@ -58,6 +60,43 @@
   written_type_ids.insert(type_id);
 }
 
+void AllocateLogName(char **filename, const char *directory) {
+  int fileindex = 0;
+  DIR* d;
+  if ((d = opendir(directory))) {
+    int index = 0;
+    struct dirent* dir;
+    while ((dir = readdir(d)) != NULL) {
+      if (sscanf(dir->d_name, "aos_log-%d", &index) == 1) {
+        if (index >= fileindex) {
+          fileindex = index + 1;
+        }
+      }
+    }
+    closedir(d);
+  } else {
+	  aos::Die("could not open directory %s because of %d (%s).",
+	  		  directory, errno, strerror(errno));
+  }
+
+  char previous[512];
+  ::std::string path = ::std::string(directory)+"/aos_log-current";
+  ssize_t len = ::readlink(path.c_str(), previous, sizeof(previous) - 1);
+  if (len != -1) {
+    previous[len] = '\0';
+  } else {
+  	previous[0] = '\0';
+  	LOG(INFO, "Could not find aos_log-current\n");
+  	printf("Could not find aos_log-current\n");
+  }
+  if (asprintf(filename, "%s/aos_log-%d", directory, fileindex) == -1) {
+	  aos::Die("BinaryLogReader: couldn't create final name because of %d (%s)."
+            " exiting\n", errno, strerror(errno));
+  }
+  LOG(INFO, "Created log file (aos_log-%d) in directory (%s). Pervious file was (%s)\n", fileindex, directory, previous);
+  printf("Created log file (aos_log-%d) in directory (%s). Pervious file was (%s)\n", fileindex, directory, previous);
+}
+
 int BinaryLogReaderMain() {
   InitNRT();
 
@@ -67,15 +106,8 @@
   }
   LOG(INFO, "logging to folder '%s'\n", folder);
 
-  const time_t t = time(NULL);
   char *tmp;
-  if (asprintf(&tmp, "%s/aos_log-%jd", folder, static_cast<uintmax_t>(t)) ==
-      -1) {
-    fprintf(stderr,
-            "BinaryLogReader: couldn't create final name because of %d (%s)."
-            " exiting\n", errno, strerror(errno));
-    return EXIT_FAILURE;
-  }
+  AllocateLogName(&tmp, folder);
   char *tmp2;
   if (asprintf(&tmp2, "%s/aos_log-current", folder) == -1) {
     fprintf(stderr,
diff --git a/aos/linux_code/logging/logging.gyp b/aos/linux_code/logging/logging.gyp
index 32df43d..52f8b96 100644
--- a/aos/linux_code/logging/logging.gyp
+++ b/aos/linux_code/logging/logging.gyp
@@ -11,6 +11,7 @@
         '<(AOS)/build/aos.gyp:logging',
         '<(AOS)/linux_code/linux_code.gyp:init',
         '<(AOS)/linux_code/linux_code.gyp:configuration',
+        '<(AOS)/common/common.gyp:die',
         'binary_log_file',
         '<(AOS)/common/common.gyp:queue_types',
       ],
