You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nlpcraft.apache.org by ar...@apache.org on 2020/09/18 04:01:56 UTC

[incubator-nlpcraft] branch master updated: Improved logging for test framework (ANSI colored JSON).

This is an automated email from the ASF dual-hosted git repository.

aradzinski pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git


The following commit(s) were added to refs/heads/master by this push:
     new 180d0b4  Improved logging for test framework (ANSI colored JSON).
180d0b4 is described below

commit 180d0b401f2e67d37e52c33637f276c079122f72
Author: Aaron Radzinski <ar...@datalingvo.com>
AuthorDate: Thu Sep 17 21:01:43 2020 -0700

    Improved logging for test framework (ANSI colored JSON).
---
 .../org/apache/nlpcraft/common/util/NCUtils.scala  | 35 +++++++++++++++++++++-
 .../model/intent/impl/NCIntentSolverEngine.scala   |  2 +-
 .../model/tools/test/NCTestClientBuilder.java      | 13 ++++++--
 .../org/apache/nlpcraft/probe/NCProbeBoot.scala    |  2 +-
 .../probe/mgrs/nlp/NCProbeEnrichmentManager.scala  |  4 +--
 5 files changed, 48 insertions(+), 8 deletions(-)

diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/util/NCUtils.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/util/NCUtils.scala
index 52fd154..13e00e2 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/util/NCUtils.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/util/NCUtils.scala
@@ -1385,7 +1385,7 @@ object NCUtils extends LazyLogging {
                 if (fileName == null || lineNum < 0)
                     errMsg
                 else
-                    s"$errMsg ${ansiCyanFg}->$ansiReset ($fileName:$lineNum)"
+                    s"$errMsg $ansiCyanFg->$ansiReset ($fileName:$lineNum)"
 
             msg.split("\n").foreach(line ⇒ {
                 val s = s"${" " * indent}${if (first) s"$ansiRedFg+- $ansiReset" else "  "}${line.trim}"
@@ -1414,6 +1414,39 @@ object NCUtils extends LazyLogging {
 
 
     /**
+     * ANSI color JSON string.
+     *
+     * @param json JSON string to color.
+     * @return
+     */
+    def colorJson(json: String): String = {
+        val buf = mutable.Buffer.empty[String]
+
+        var inQuotes = false
+        var isValue = false
+
+        for (ch ← json) {
+            ch match {
+                case ':' ⇒ buf += s"$ansiGreenFg:$ansiReset"; isValue = true
+                case '[' | ']' | '{' | '}' | ',' ⇒ buf += s"$ansiBold$ansiYellowFg$ch$ansiReset"
+                case '"' ⇒ inQuotes = !inQuotes; buf += s"$ansiBlueFg$ch$ansiReset"
+                case _ ⇒
+                    if (inQuotes && isValue)
+                        buf += s"$ansiGreenFg$ch$ansiReset"
+                    else if (inQuotes && !isValue)
+                        buf += s"$ansiCyanFg$ch$ansiReset"
+                    else
+                        buf += s"$ch"
+            }
+
+            if (ch == ',' && !inQuotes)
+                isValue = false
+        }
+
+        buf.mkString
+    }
+
+    /**
       * Unzips file.
       *
       * @param zipFile Zip file.
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentSolverEngine.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentSolverEngine.scala
index ac29a95..c6e3e51 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentSolverEngine.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentSolverEngine.scala
@@ -276,7 +276,7 @@ object NCIntentSolverEngine extends LazyLogging with NCOpenCensusTrace {
                         )
                 })
 
-                tbl.info(logger, Some(s"Found matching intents (sorted from ${ansiRedFg}best$ansiReset to worst match):"))
+                tbl.info(logger, Some(s"Found matching intents (sorted ${ansiRedFg}best$ansiReset to worst):"))
             }
             else
                 logger.info("No matching intent found.")
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/tools/test/NCTestClientBuilder.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/tools/test/NCTestClientBuilder.java
index 81b78e8..0458d1d 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/tools/test/NCTestClientBuilder.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/tools/test/NCTestClientBuilder.java
@@ -32,6 +32,7 @@ import org.apache.http.entity.StringEntity;
 import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.impl.client.HttpClients;
 import org.apache.http.util.EntityUtils;
+import org.apache.nlpcraft.common.util.NCUtils;
 import org.jsoup.Jsoup;
 import org.apache.nlpcraft.model.tools.embedded.NCEmbeddedProbe;
 import org.apache.nlpcraft.model.tools.embedded.NCEmbeddedResult;
@@ -655,8 +656,14 @@ public class NCTestClientBuilder {
                 assert res.getResultType().isPresent() && res.getResult().isPresent();
 
                 if (respLog) {
-                    log.info("'ask' request '{}' answered successfully with '{}' result:\n{}", txt,
-                        res.getResultType().get(), mkPrettyString(res.getResultType().get(), res.getResult().get()));
+                    log.info("'ask' request '{}' answered successfully with '{}' result:\n{}",
+                        txt,
+                        res.getResultType().get(),
+                        mkPrettyString(
+                            res.getResultType().get(),
+                            res.getResult().get()
+                        )
+                    );
                 }
             }
             else {
@@ -684,7 +691,7 @@ public class NCTestClientBuilder {
                     case "text":
                     case "yaml":
                     case "json": // JSON already configured for pretty printing.
-                        return body;
+                        return NCUtils.colorJson(body);
 
                     default: return body;
                 }
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/NCProbeBoot.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/NCProbeBoot.scala
index 15d1f83..eafed56 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/NCProbeBoot.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/NCProbeBoot.scala
@@ -362,7 +362,7 @@ private [probe] object NCProbeBoot extends LazyLogging with NCOpenCensusTrace {
         
         val ver = NCVersion.getCurrent
 
-        tbl += (s"${ansiBlueFg}Probe ID$ansiReset", s"$ansiReversed${cfg.id}$ansiReset")
+        tbl += (s"${ansiBlueFg}Probe ID$ansiReset", s"$ansiBold${cfg.id}$ansiReset")
         tbl += (s"${ansiBlueFg}Probe Token$ansiReset", cfg.token)
         tbl += (s"${ansiBlueFg}API Version$ansiReset", ver.version + ", " + ver.date.toString)
         tbl += (s"${ansiBlueFg}Down-Link$ansiReset", cfg.downLinkString)
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/NCProbeEnrichmentManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/NCProbeEnrichmentManager.scala
index 4dce63f..52630b8 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/NCProbeEnrichmentManager.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/NCProbeEnrichmentManager.scala
@@ -230,7 +230,7 @@ object NCProbeEnrichmentManager extends NCService with NCOpenCensusModelStats {
 
         val tbl = NCAsciiTable()
 
-        tbl += (s"${ansiBlueFg}Text$ansiReset", nlpSens.map(_.text))
+        tbl += (s"${ansiBlueFg}Text$ansiReset", nlpSens.map(s ⇒ s"$ansiBold$ansiGreenFg${s.text}$ansiReset"))
         tbl += (s"${ansiBlueFg}Model ID$ansiReset", mdlId)
         tbl += (s"${ansiBlueFg}User ID$ansiReset", usrId)
         tbl += (s"$ansiBlueFg  First Name$ansiReset", senMeta.getOrElse("FIRST_NAME", ""))
@@ -542,7 +542,7 @@ object NCProbeEnrichmentManager extends NCService with NCOpenCensusModelStats {
                 NCTokenLogger.prepareTable(sen.asScala).
                     info(
                         logger,
-                        Some(s"Parsing variant #${i + 1} for: '$txt'")
+                        Some(s"Parsing variant #${i + 1} of ${senVars.size} (sorted best to worst) for: '$txt'")
                     )
             }
         }