code: public Log openLog(String name) {
      return new Log(name, this, ThreadContext.currentContextOrThrow().serializer().clone());
    }
docs: Opens a new {@link Log}, recovering the log from disk if it exists.
  <p>
  When a log is opened, the log will attempt to load {@link Segment}s from the storage {@link #directory()}
  according to the provided log {@code name}. If segments for the given log name are present on disk, segments
  will be loaded and indexes will be rebuilt from disk. If no segments are found, an empty log will be created.
  <p>
  When log files are loaded from disk, the file names are expected to be based on the provided log {@code name}.
  
  @param name The log name.
  @return The opened log.