diff --git a/asterixdb/asterix-app/src/main/resources/log4j2.xml b/asterixdb/asterix-app/src/main/resources/log4j2.xml
index 2ea8d4a..e54a424 100644
--- a/asterixdb/asterix-app/src/main/resources/log4j2.xml
+++ b/asterixdb/asterix-app/src/main/resources/log4j2.xml
@@ -19,6 +19,7 @@
 <Configuration status="WARN">
    <CustomLevels>
     <CustomLevel name="ACCESS" intLevel="550" />
+    <CustomLevel name="TRACER" intLevel="570" />
   </CustomLevels>
   <Appenders>
     <Console name="Console" target="SYSTEM_OUT">
@@ -27,6 +28,12 @@
     <Console name="AccessLog" target="SYSTEM_OUT">
       <PatternLayout pattern="%m%n"/>
     </Console>
+    <Console name="TracerLog" target="SYSTEM_OUT">
+      <PatternLayout pattern="%m%n"/>
+    </Console>
+    <File name="TracerLogFile" fileName="target/tracer.log">
+      <PatternLayout pattern="%m,%n" header="[" footer="]"/>
+    </File>
   </Appenders>
   <Loggers>
     <Root level="WARN">
@@ -36,5 +43,9 @@
     <Logger name="org.apache.hyracks.http.server.CLFLogger" level="ACCESS" additivity="false">
         <AppenderRef ref="AccessLog"/>
     </Logger>
+    <Logger name="org.apache.hyracks.util.trace.Tracer.Traces" level="TRACER" additivity="false">
+      <AppenderRef ref="TracerLog"/>
+      <AppenderRef ref="TracerLogFile"/>
+    </Logger>
   </Loggers>
 </Configuration>
\ No newline at end of file
diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NCLogConfigurationFactory.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NCLogConfigurationFactory.java
index 41f8e7b..24c3dee 100644
--- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NCLogConfigurationFactory.java
+++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/NCLogConfigurationFactory.java
@@ -51,10 +51,12 @@
         ComponentBuilder triggeringPolicy = builder.newComponent("Policies")
                 .addComponent(builder.newComponent("CronTriggeringPolicy").addAttribute("schedule", "0 0 0 * * ?"))
                 .addComponent(builder.newComponent("SizeBasedTriggeringPolicy").addAttribute("size", "50M"));
-        AppenderComponentBuilder defaultRoll = builder.newAppender("default", "RollingFile")
-                .addAttribute("fileName", FileUtil.joinPath(logDir, "nc-" + nodeId + ".log"))
-                .addAttribute("filePattern", FileUtil.joinPath(logDir, "nc-" + nodeId + "-%d{MM-dd-yy}.log.gz"))
-                .add(defaultLayout).addComponent(triggeringPolicy);
+        AppenderComponentBuilder defaultRoll =
+                builder.newAppender("default", "RollingFile")
+                        .addAttribute("fileName", FileUtil.joinPath(logDir, "nc-" + nodeId + ".log"))
+                        .addAttribute("filePattern",
+                                FileUtil.joinPath(logDir, "nc-" + nodeId + "-%d{MM-dd-yy-ss}.log.gz"))
+                        .add(defaultLayout).addComponent(triggeringPolicy);
         builder.add(defaultRoll);
 
         // create the new logger
@@ -65,12 +67,22 @@
                 builder.newAppender("access", "RollingFile")
                         .addAttribute("fileName", FileUtil.joinPath(logDir, "access-" + nodeId + ".log"))
                         .addAttribute("filePattern",
-                                FileUtil.joinPath(logDir, "access-" + nodeId + "-%d{MM-dd-yy}.log.gz"))
+                                FileUtil.joinPath(logDir, "access-" + nodeId + "-%d{MM-dd-yy-ss}.log.gz"))
                         .add(accessLayout).addComponent(triggeringPolicy);
         builder.add(accessRoll);
         builder.add(builder.newLogger("org.apache.hyracks.http.server.CLFLogger", Level.forName("ACCESS", 550))
                 .add(builder.newAppenderRef("access")).addAttribute("additivity", false));
 
+        LayoutComponentBuilder traceLayout = builder.newLayout("PatternLayout").addAttribute("pattern", "%m,%n")
+                .addAttribute("header", "[").addAttribute("footer", "]");
+        AppenderComponentBuilder traceRoll = builder.newAppender("trace", "RollingFile")
+                .addAttribute("fileName", logDir + "trace-" + nodeId + ".log")
+                .addAttribute("filePattern", logDir + "trace-" + nodeId + "-%d{MM-dd-yy-ss}.log.gz").add(traceLayout)
+                .addComponent(triggeringPolicy);
+        builder.add(traceRoll);
+        builder.add(builder.newLogger("org.apache.hyracks.util.trace.Tracer.Traces", Level.forName("TRACER", 570))
+                .add(builder.newAppenderRef("trace")).addAttribute("additivity", false));
+
         return builder.build();
     }
 
diff --git a/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/trace/Event.java b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/trace/Event.java
index 3edba21..b5fe3d3 100644
--- a/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/trace/Event.java
+++ b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/trace/Event.java
@@ -77,7 +77,11 @@
             sb.append(",\"s\":\"").append(scope).append("\"");
         }
         if (args != null) {
-            sb.append(",\"args\":").append(args);
+            if (args.isEmpty()) {
+                sb.append(",\"args\":").append("\"\"");
+            } else {
+                sb.append(",\"args\":").append(args);
+            }
         }
         sb.append("}");
         return sb;
diff --git a/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/trace/Tracer.java b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/trace/Tracer.java
index 1e8af75..9019fdf 100644
--- a/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/trace/Tracer.java
+++ b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/trace/Tracer.java
@@ -34,20 +34,20 @@
  */
 public class Tracer implements ITracer {
 
-    public static final Logger LOGGER = LogManager.getLogger();
+    private static final Logger LOGGER = LogManager.getLogger();
 
-    protected static final Level TRACE_LOG_LEVEL = Level.INFO;
-    protected static final ThreadLocal<DateFormat> DATE_FORMAT =
+    private static final Level TRACE_LOG_LEVEL = Level.forName("TRACER", 570);
+    private static final ThreadLocal<DateFormat> DATE_FORMAT =
             ThreadLocal.withInitial(() -> new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"));
 
-    protected final Logger traceLog;
-    protected long categories;
-    protected TraceCategoryRegistry registry;
+    private final Logger traceLog;
+    private long categories;
+    private final TraceCategoryRegistry registry;
 
-    protected static final int pid = PidHelper.getPid();
+    private static final int pid = PidHelper.getPid();
 
     public Tracer(String name, long categories, TraceCategoryRegistry registry) {
-        final String traceLoggerName = Tracer.class.getName() + "@" + name;
+        final String traceLoggerName = Tracer.class.getName() + ".Traces." + name;
         LOGGER.info("Initialize Tracer " + traceLoggerName);
         this.traceLog = LogManager.getLogger(traceLoggerName);
         this.categories = categories;
