From 333765d2ec95c807cd82e8b267969501b7d0298a Mon Sep 17 00:00:00 2001 From: anthonycorbacho Date: Tue, 8 May 2018 16:40:01 +0900 Subject: [PATCH 1/5] Release java-grok 0.1.9 --- README.md | 10 ++++++---- gradle.properties | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 12dcf11..8ca6891 100644 --- a/README.md +++ b/README.md @@ -15,18 +15,20 @@ Java Grok is simple API that allows you to easily parse logs and other files (si ```maven - io.thekraken - grok - 0.1.5 + io.krakens + java-grok + 0.1.9 ``` Or with gradle ```gradle -compile "io.thekraken:grok:0.1.5" +compile "io.krakens:java-grok:0.1.9" ``` +Old release ([Link](https://mvnrepository.com/artifact/io.thekraken/grok)) + ### Usage ([Grok java documentation](http://grok.nflabs.com/javadoc)) Example of how to use java-grok: diff --git a/gradle.properties b/gradle.properties index cc302f9..937cf2f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1 +1 @@ -version=0.1.9-SNAPSHOT \ No newline at end of file +version=0.1.10-SNAPSHOT From 5198ad7a85332299c16789ddfe4c527b3d04380d Mon Sep 17 00:00:00 2001 From: SivaMaplelabs Date: Wed, 3 Oct 2018 22:06:23 +0530 Subject: [PATCH 2/5] Preserve the order of log format in capture (#106) --- src/main/java/io/krakens/grok/api/Match.java | 6 +++--- src/test/java/io/krakens/grok/api/CaptureTest.java | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/io/krakens/grok/api/Match.java b/src/main/java/io/krakens/grok/api/Match.java index 1cbef15..2c87a1b 100644 --- a/src/main/java/io/krakens/grok/api/Match.java +++ b/src/main/java/io/krakens/grok/api/Match.java @@ -5,7 +5,7 @@ import java.util.ArrayList; import java.util.Collections; -import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.regex.Matcher; @@ -61,7 +61,7 @@ public int getEnd() { public void setKeepEmptyCaptures(boolean ignore) { // clear any cached captures if ( capture.size() > 0) { - capture = new HashMap<>(); + capture = new LinkedHashMap<>(); } this.keepEmptyCaptures = ignore; } @@ -122,7 +122,7 @@ private Map capture(boolean flattened ) throws GrokException { return capture; } - capture = new HashMap<>(); + capture = new LinkedHashMap<>(); // _capture.put("LINE", this.line); // _capture.put("LENGTH", this.line.length() +""); diff --git a/src/test/java/io/krakens/grok/api/CaptureTest.java b/src/test/java/io/krakens/grok/api/CaptureTest.java index ea11355..b4e88b8 100644 --- a/src/test/java/io/krakens/grok/api/CaptureTest.java +++ b/src/test/java/io/krakens/grok/api/CaptureTest.java @@ -54,7 +54,7 @@ public void test002_captureMathodMulti() throws GrokException { assertEquals(2, map.size()); assertEquals("Hello", map.get("foo")); assertEquals("World", map.get("bar")); - assertEquals("{bar=World, foo=Hello}", map.toString()); + assertEquals("{foo=Hello, bar=World}", map.toString()); } @Test @@ -69,7 +69,7 @@ public void test003_captureMathodNasted() throws GrokException { assertEquals(2, map.size()); assertEquals("Hello World", map.get("foo")); assertEquals("World", map.get("bar")); - assertEquals("{bar=World, foo=Hello World}", map.toString()); + assertEquals("{foo=Hello World, bar=World}", map.toString()); } @Test From 8a0a316260250e04402aa3dcea49af6e79e80f7f Mon Sep 17 00:00:00 2001 From: ruanwenjun <861923274@qq.com> Date: Tue, 28 May 2019 09:25:29 +0800 Subject: [PATCH 3/5] fix can match empty line (#109) --- src/main/java/io/krakens/grok/api/Grok.java | 2 +- src/test/java/io/krakens/grok/api/GrokTest.java | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/krakens/grok/api/Grok.java b/src/main/java/io/krakens/grok/api/Grok.java index 6729167..8a27c97 100644 --- a/src/main/java/io/krakens/grok/api/Grok.java +++ b/src/main/java/io/krakens/grok/api/Grok.java @@ -162,7 +162,7 @@ public ArrayList> capture(List logs) { * @return Grok Match */ public Match match(CharSequence text) { - if (compiledNamedRegex == null || StringUtils.isBlank(text)) { + if (compiledNamedRegex == null || text == null) { return Match.EMPTY; } diff --git a/src/test/java/io/krakens/grok/api/GrokTest.java b/src/test/java/io/krakens/grok/api/GrokTest.java index 0277c9d..ae2a646 100644 --- a/src/test/java/io/krakens/grok/api/GrokTest.java +++ b/src/test/java/io/krakens/grok/api/GrokTest.java @@ -671,4 +671,17 @@ public void testTimeZone() { instant = (Instant) grok.match(dateWithTimeZone).capture().get("timestamp"); assertEquals(ZonedDateTime.parse(dateWithTimeZone, dtf.withZone(ZoneOffset.ofHours(8))).toInstant(), instant); } + + @Test + public void testEmptyLine() { + GrokCompiler grokCompiler = GrokCompiler.newInstance(); + grokCompiler.registerDefaultPatterns(); + final Grok grok = grokCompiler.compile("%{GREEDYDATA}"); + + // empty line + String line = " "; + Match gm = grok.match(line); + Map capture = gm.capture(); + assertEquals(1, capture.size()); + } } From 927c227208deeb52041e4118bcef9da9804cd7f2 Mon Sep 17 00:00:00 2001 From: Serguei Kouzmine Date: Tue, 6 Apr 2021 21:11:05 -0400 Subject: [PATCH 4/5] added capture keyset tests (#115) --- .../grok/api/GrokDocumentationTest.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/test/java/io/krakens/grok/api/GrokDocumentationTest.java b/src/test/java/io/krakens/grok/api/GrokDocumentationTest.java index 62de9fb..c571b3d 100644 --- a/src/test/java/io/krakens/grok/api/GrokDocumentationTest.java +++ b/src/test/java/io/krakens/grok/api/GrokDocumentationTest.java @@ -1,9 +1,15 @@ package io.krakens.grok.api; +import java.util.HashSet; import java.util.Map; import org.assertj.core.api.Assertions; import org.junit.Test; +import static org.hamcrest.Matchers.containsInAnyOrder; +import static org.hamcrest.Matchers.hasItem; +import static org.junit.Assert.*; + +import org.assertj.core.util.Arrays; public class GrokDocumentationTest { @@ -27,5 +33,23 @@ public void assureCodeInReadmeWorks() { final Map capture = gm.capture(); Assertions.assertThat(capture).hasSize(22); + final boolean debug = false; + final Object[] keywordArray = new Object[] { "COMBINEDAPACHELOG", + "COMMONAPACHELOG", "clientip", "ident", "auth", "timestamp", "MONTHDAY", + "MONTH", "YEAR", "TIME", "HOUR", "MINUTE", "SECOND", "INT", "verb", + "httpversion", "rawrequest", "request", "response", "bytes", "referrer", + "agent" }; + if (debug) + capture.keySet().stream().forEach(System.err::println); + assertTrue(new HashSet(Arrays.asList(keywordArray)) + .containsAll(new HashSet(capture.keySet()))); + + Arrays.asList(keywordArray).stream() + .forEach(o -> assertThat(capture.keySet(), hasItem((String) o))); + assertThat(new HashSet(capture.keySet()), + containsInAnyOrder(keywordArray)); + assertTrue(new HashSet(capture.keySet()) + .containsAll(new HashSet(Arrays.asList(keywordArray)))); + } } From 901fda38ef6d5c902355eb25cff3f4b4fc3debde Mon Sep 17 00:00:00 2001 From: Jacob Varghese Date: Wed, 7 Apr 2021 06:41:40 +0530 Subject: [PATCH 5/5] Update classes as serializable to work with bigdata beam pipeline (#110) * Make class serializable to work with BigData Beam pipeline * Fix travis build issue - Expected feature release number in range of 9 to 15, but got: 8 --- .travis.yml | 1 + src/main/java/io/krakens/grok/api/Grok.java | 3 ++- src/main/java/io/krakens/grok/api/GrokCompiler.java | 3 ++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 9bcf999..7851aeb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,3 +1,4 @@ language: java jdk: - oraclejdk8 +dist: trusty \ No newline at end of file diff --git a/src/main/java/io/krakens/grok/api/Grok.java b/src/main/java/io/krakens/grok/api/Grok.java index 8a27c97..988b09f 100644 --- a/src/main/java/io/krakens/grok/api/Grok.java +++ b/src/main/java/io/krakens/grok/api/Grok.java @@ -1,5 +1,6 @@ package io.krakens.grok.api; +import java.io.Serializable; import java.time.ZoneId; import java.util.ArrayList; import java.util.List; @@ -21,7 +22,7 @@ * * @since 0.0.1 */ -public class Grok { +public class Grok implements Serializable { /** * Named regex of the originalGrokPattern. */ diff --git a/src/main/java/io/krakens/grok/api/GrokCompiler.java b/src/main/java/io/krakens/grok/api/GrokCompiler.java index 13813b9..d7c5c79 100644 --- a/src/main/java/io/krakens/grok/api/GrokCompiler.java +++ b/src/main/java/io/krakens/grok/api/GrokCompiler.java @@ -7,6 +7,7 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; +import java.io.Serializable; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.time.ZoneId; @@ -22,7 +23,7 @@ import org.apache.commons.lang3.StringUtils; -public class GrokCompiler { +public class GrokCompiler implements Serializable { // We don't want \n and commented line private static final Pattern patternLinePattern = Pattern.compile("^([A-z0-9_]+)\\s+(.*)$");