]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Java/Source/GenBuild/org/tianocore/build/global/GenBuildLogger.java
Fixed EDKT372
[mirror_edk2.git] / Tools / Java / Source / GenBuild / org / tianocore / build / global / GenBuildLogger.java
index 85ba166871ecebefd2d7fa6880c4bf2972ed1118..18ef849ed02a8b24c70b704317842f341d9ec44b 100644 (file)
@@ -44,21 +44,25 @@ import org.tianocore.common.logger.LogMethod;
 public class GenBuildLogger extends DefaultLogger implements LogMethod {\r
     \r
     Project project = null;\r
-       ///\r
+    \r
+    ///\r
     /// Time of the start of the build \r
-       /// \r
+    ///\r
     private long startTime = System.currentTimeMillis();\r
+    \r
     ///\r
     /// flag to present whether cache all msg or not\r
     /// true means to cache.\r
     ///\r
     private static boolean flag = false;\r
-    \r
-    private static boolean enableFlag = true;\r
 \r
     private static Map<FpdModuleIdentification, List<String>> map = new LinkedHashMap<FpdModuleIdentification, List<String> >(256);\r
     \r
     private FpdModuleIdentification id = null;\r
+    //\r
+       //  semaroph for multi thread\r
+       // \r
+    public static Object semaphore = new Object();\r
     \r
     public GenBuildLogger () {\r
         \r
@@ -79,6 +83,7 @@ public class GenBuildLogger extends DefaultLogger implements LogMethod {
         if (this.project == null) {\r
             return;\r
         }\r
+\r
         //\r
         // If msgLevel is always print, then print it\r
         //\r
@@ -98,7 +103,7 @@ public class GenBuildLogger extends DefaultLogger implements LogMethod {
         case EdkLog.EDK_INFO:\r
             log(msgSource, msg, Project.MSG_INFO);\r
             break;\r
-               case EdkLog.EDK_VERBOSE:\r
+        case EdkLog.EDK_VERBOSE:\r
             log(msgSource, msg, Project.MSG_VERBOSE);\r
             break;\r
         case EdkLog.EDK_DEBUG:\r
@@ -181,7 +186,8 @@ public class GenBuildLogger extends DefaultLogger implements LogMethod {
     }\r
     \r
     public void messageLogged(BuildEvent event) {\r
-               int currentLevel = event.getPriority();\r
+        \r
+        int currentLevel = event.getPriority();\r
         //\r
         // If current level is upper than Ant Level, skip it\r
         //\r
@@ -233,10 +239,6 @@ public class GenBuildLogger extends DefaultLogger implements LogMethod {
         flag = enable;\r
     }\r
     \r
-    public static void maskAllLog(boolean enable) {\r
-        enableFlag = !enable;\r
-    }\r
-    \r
     protected synchronized void log(String message) {\r
         //\r
         // cache log\r
@@ -272,38 +274,15 @@ public class GenBuildLogger extends DefaultLogger implements LogMethod {
     }\r
 \r
     public void buildFinished(BuildEvent event) {\r
-        Throwable error = event.getException();\r
-        StringBuffer message = new StringBuffer();\r
-\r
-        if (error == null) {\r
-            message.append(StringUtils.LINE_SEP);\r
-            message.append("BUILD SUCCESSFUL");\r
-        } else {\r
-            message.append(StringUtils.LINE_SEP);\r
-            message.append("BUILD FAILED");\r
-            message.append(StringUtils.LINE_SEP);\r
-\r
-            if (Project.MSG_DEBUG <= msgOutputLevel\r
-                || !(error instanceof BuildException)) {\r
-                message.append(StringUtils.getStackTrace(error));\r
-            } else {\r
-                if (error instanceof BuildException) {\r
-                    message.append(error.toString()).append(lSep);\r
-                } else {\r
-                    message.append(error.getMessage()).append(lSep);\r
-                }\r
-            }\r
-        }\r
-        message.append(StringUtils.LINE_SEP);\r
-        message.append("Total time: ");\r
-        message.append(formatTime(System.currentTimeMillis() - startTime));\r
-\r
-        String msg = message.toString();\r
-        if (error == null) {\r
-            printMessage(msg, out, Project.MSG_VERBOSE);\r
-        } else {\r
-            printMessage(msg, err, Project.MSG_ERR);\r
-        }\r
-        log(msg);\r
+               if (this.msgOutputLevel >= Project.MSG_VERBOSE) {\r
+                       int level = this.msgOutputLevel;\r
+                       synchronized(semaphore){\r
+                           this.msgOutputLevel = this.msgOutputLevel - 1;\r
+                           super.buildFinished(event);\r
+                           this.msgOutputLevel = level;\r
+                       }\r
+               } else {\r
+                       super.buildFinished(event);\r
+               }\r
     }\r
 }
\ No newline at end of file