in ratis-logservice/src/main/java/org/apache/ratis/logservice/shell/commands/ReadLogCommand.java [41:71]
public void run(Terminal terminal, LineReader lineReader, LogServiceClient client, String[] args) {
if (args.length != 1) {
terminal.writer().println("ERROR - Usage: read <name>");
return;
}
String logName = args[0];
try (LogStream stream = client.getLog(LogName.of(logName));
LogReader reader = stream.createReader()) {
long firstId = stream.getStartRecordId();
long lastId = stream.getLastRecordId();
StringBuilder sb = new StringBuilder();
List<ByteBuffer> records = reader.readBulk((int) (lastId - firstId));
for (ByteBuffer record : records) {
if (sb.length() > 0) {
sb.append(", ");
}
sb.append("\"");
if (record != null) {
String strData = new String(record.array(), record.arrayOffset(), record.remaining(), StandardCharsets.UTF_8);
sb.append(strData);
}
sb.append("\"");
}
sb.insert(0, "[");
sb.append("]");
terminal.writer().println(sb.toString());
} catch (Exception e) {
terminal.writer().println("Failed to read from log");
e.printStackTrace(terminal.writer());
}
}