SOLR-13635: Add basic support for parsing searcher openings and updates
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/SolrLogStream.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/SolrLogStream.java
index db9ccbc..db5a187 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/SolrLogStream.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/SolrLogStream.java
@@ -137,6 +137,10 @@
 
         if (line.contains("QTime=")) {
           t = parseQueryRecord(line);
+        } else if(line.contains("Registered new searcher")) {
+          t = parseNewSearch(line);
+        } else if(line.contains("path=/update")) {
+          t = parseUpdate(line);
         } else {
           continue;
         }
@@ -203,6 +207,17 @@
     return tuple;
   }
 
+  private Tuple parseNewSearch(String line) {
+
+    String[] parts = line.split("\\s+");
+    Tuple tuple = new Tuple();
+    tuple.put("date_dt", parts[0]);
+    tuple.put("core_s", parseNewSearcherCollection(line));
+    tuple.put("new_searcher", "true");
+
+    return tuple;
+  }
+
   private String parseCollection(String line) {
     char[] ca = {',', '}'};
     String parts[] = line.split("collection=c:");
@@ -213,6 +228,27 @@
     }
   }
 
+  private Tuple parseUpdate(String line) {
+    String[] parts = line.split("\\s+");
+    Tuple tuple = new Tuple();
+    tuple.put("date_dt", parts[0]);
+    tuple.put("update_s", "true");
+    tuple.put("collection_s", parseCollection(line));
+    tuple.put("core_s", parseCore(line));
+    tuple.put("node_s", parseNode(line));
+    return tuple;
+  }
+
+  private String parseNewSearcherCollection(String line) {
+    char[] ca = {']'};
+    String parts[] = line.split("\\[");
+    if(parts.length > 3) {
+      return readUntil(parts[2], ca);
+    } else {
+      return null;
+    }
+  }
+
   private String parseCore(String line) {
     char[] ca = {',', '}'};
     String parts[] = line.split("core=x:");