diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/NCService.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/NCService.scala
index ddba511..1fb257c 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/NCService.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/NCService.scala
@@ -19,6 +19,7 @@
 
 import com.typesafe.scalalogging.LazyLogging
 import io.opencensus.trace.Span
+import org.apache.commons.lang3.StringUtils
 import org.apache.nlpcraft.common.opencensus.NCOpenCensusTrace
 import org.apache.nlpcraft.common.ansi.NCAnsi._
 
@@ -104,6 +105,14 @@
     }
 
     /**
+     *
+     * @param ms
+     * @return
+     */
+    private def padDur(ms: Long): String =
+        StringUtils.rightPad(s"${U.now() - ms}ms", 6)
+
+    /**
      * Acks started service. Should be called at the end of the `start()` method.
      */
     protected def ackStarted(): NCService = {
@@ -119,9 +128,9 @@
             "state" -> "started"
         )
 
-        val dur = s"$ansiGreenFg[${U.now() - timeStampMs}ms]$ansiReset"
+        val durBrkt = s"$ansiReversed$ansiGreenFg$ansiBold[${padDur(timeStampMs)}]$ansiReset"
 
-        logger.info(s"$name started $dur")
+        logger.info(s"$durBrkt $name started.")
 
         timeStampMs = -1L
 
@@ -142,7 +151,9 @@
             "state" -> "stopped"
         )
 
-        logger.info(s"$name stopped.")
+        val durBrkt = s"$ansiReversed$ansiBlueFg$ansiBold[${padDur(timeStampMs)}]$ansiReset"
+
+        logger.info(s"$durBrkt $name stopped.")
 
         timeStampMs = -1L
     }
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/solver/NCIntentSolverEngine.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/solver/NCIntentSolverEngine.scala
index dd59a88..86390ef 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/solver/NCIntentSolverEngine.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/solver/NCIntentSolverEngine.scala
@@ -192,11 +192,16 @@
 
         val req = ctx.getRequest
 
+        val usrId = req.getUser.getId
+        val mdlId = ctx.getModel.getId
+
         startScopedSpan("solve",
             "srvReqId" -> req.getServerRequestId,
-            "userId" -> req.getUser.getId,
-            "mdlId" -> ctx.getModel.getId,
-            "normText" -> req.getNormalizedText) { _ =>
+            "userId" -> usrId,
+            "mdlId" -> mdlId,
+            "normText" -> req.getNormalizedText) { span =>
+            NCDialogFlowManager.ack(usrId, mdlId, span)
+
             val matches = mutable.ArrayBuffer.empty[MatchHolder]
 
             // Find all matches across all intents and sentence variants.
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/dialogflow/NCDialogFlowManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/dialogflow/NCDialogFlowManager.scala
index 8c5f2c1..b7e667d 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/dialogflow/NCDialogFlowManager.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/dialogflow/NCDialogFlowManager.scala
@@ -18,13 +18,15 @@
 package org.apache.nlpcraft.probe.mgrs.dialogflow
 
 import io.opencensus.trace.Span
+import org.apache.nlpcraft.common.ascii.NCAsciiTable
 import org.apache.nlpcraft.common.{NCService, _}
 import org.apache.nlpcraft.model.intent.solver.NCIntentSolverResult
 import org.apache.nlpcraft.model.{NCCompany, NCContext, NCDialogFlowItem, NCIntentMatch, NCResult, NCToken, NCUser, NCVariant}
 import org.apache.nlpcraft.probe.mgrs.model.NCModelManager
 
+import java.text.DateFormat
 import java.util
-import java.util.Optional
+import java.util.{Date, Optional}
 import scala.collection._
 
 /**
@@ -151,6 +153,7 @@
       *
       * @param usrId User ID.
       * @param mdlId Model ID.
+      * @param parent Optional parent span.
       * @return Dialog flow.
       */
     def getDialogFlow(usrId: Long, mdlId: String, parent: Span = null): Seq[NCDialogFlowItem] =
@@ -161,6 +164,48 @@
         }
 
     /**
+     * Prints out ASCII table for current dialog flow.
+     *
+     * @param usrId User ID.
+     * @param mdlId Model ID.
+     * @param parent Optional parent span.
+     */
+    def ack(usrId: Long, mdlId: String, parent: Span = null): Unit = {
+        startScopedSpan("ack", parent, "usrId" -> usrId, "mdlId" -> mdlId) { _ =>
+            val curFlow = flow.synchronized {
+                flow.getOrElseUpdate(Key(usrId, mdlId), mutable.ArrayBuffer.empty[NCDialogFlowItem])
+            }
+
+            val tbl = NCAsciiTable(
+                "",
+                "Intent ID",
+                "Sever Request ID",
+                "Text",
+                "Received"
+            )
+
+            var i = 1
+
+            curFlow.foreach(x => {
+                tbl += (
+                    i,
+                    x.getIntentId,
+                    m(x.getServerRequestId),
+                    x.getNormalizedText,
+                    DateFormat.getDateTimeInstance.format(new Date(x.getReceiveTimestamp))
+                )
+
+                i += 1
+            })
+
+            logger.info(s"Current dialog flow (oldest first) for [" +
+                s"mdlId=$mdlId, " +
+                s"usrId=$usrId" +
+            s"]:\n${tbl.toString()}")
+        }
+    }
+
+    /**
      *  Gets next clearing time.
      */
     private def clearForTimeout(): Long =
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/query/NCQueryManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/query/NCQueryManager.scala
index f4d2afe..a12a4e8 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/query/NCQueryManager.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/query/NCQueryManager.scala
@@ -270,7 +270,7 @@
                 tbl += (s"${b("Server Request ID")}", m(srvReqId))
                 tbl += (s"${b("Data")}", U.prettyJson(data.orNull).split("\n").toSeq)
 
-                logger.info(s"New request received:\n$tbl")
+                logger.info(s"New user request received:\n$tbl")
 
                 val enabledBuiltInToks = NCProbeManager.getModel(mdlId, span).enabledBuiltInTokens
 
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/user/NCUserManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/user/NCUserManager.scala
index b24a5e8..93fa702 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/user/NCUserManager.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/user/NCUserManager.scala
@@ -213,7 +213,7 @@
     private def clearSession(ses: SigninSession): Unit = {
         clearSigninCache(ses)
         
-        logger.info(s"User signed out: ${ses.userId}")
+        logger.info(s"User ID signed out: ${ses.userId}")
     }
 
     /**
