]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-7960 add task UUID to logs
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Fri, 12 Aug 2016 09:34:12 +0000 (11:34 +0200)
committerSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Tue, 16 Aug 2016 06:20:15 +0000 (08:20 +0200)
server/sonar-process/src/test/java/org/sonar/process/LogbackHelperTest.java
server/sonar-search/src/main/java/org/sonar/search/SearchLogging.java
server/sonar-server/src/main/java/org/sonar/ce/log/CeLogging.java
server/sonar-server/src/main/java/org/sonar/server/app/ServerProcessLogging.java
server/sonar-server/src/test/java/org/sonar/ce/log/CeLoggingTest.java
server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/step/ExecuteVisitorsStepTest.java
server/sonar-server/src/test/java/org/sonar/server/computation/taskprocessor/CeWorkerCallableImplTest.java
sonar-application/src/main/java/org/sonar/application/AppLogging.java

index 6eeacdebea96f91444752d5ce77437113a742335..389a4c4f395f18c57c7bd9e3028f6992694ab66e 100644 (file)
@@ -46,12 +46,12 @@ import static org.mockito.Mockito.mock;
 
 public class LogbackHelperTest {
 
-  Props props = new Props(new Properties());
-  LogbackHelper underTest = new LogbackHelper();
-
   @Rule
   public TemporaryFolder temp = new TemporaryFolder();
 
+  private Props props = new Props(new Properties());
+  private LogbackHelper underTest = new LogbackHelper();
+
   @Before
   public void setUp() throws Exception {
     File dir = temp.newFolder();
index 6bbf88ab2c85c9869136e0cc1bf47375d3c99ad5..ec3ac8fc78b0a9b2f207219b0de3e2fb92d87424 100644 (file)
@@ -28,7 +28,7 @@ import org.sonar.process.LogbackHelper;
 
 public class SearchLogging {
 
-  private static final String LOG_FORMAT = "%d{yyyy.MM.dd HH:mm:ss} %-5level  es[%logger{20}] %X %msg%n";
+  private static final String LOG_FORMAT = "%d{yyyy.MM.dd HH:mm:ss} %-5level  es[][%logger{20}] %X %msg%n";
 
   private LogbackHelper helper = new LogbackHelper();
 
index 7cdf1c9ff045ee8ecf842778f9173cd8011f73cf..406bad585aad1388165a184d152a102286bf07f6 100644 (file)
@@ -42,17 +42,18 @@ public class CeLogging {
 
   private static final String CE_ACTIVITY_APPENDER_NAME = "ce_activity";
   private static final String CE_ACTIVITY_FILE_NAME_PREFIX = "ce_activity";
-  private static final String CE_ACTIVITY_ENCODER_PATTERN = "%d{yyyy.MM.dd HH:mm:ss} %-5level [%logger{20}] %msg%n";
+  private static final String CE_ACTIVITY_ENCODER_PATTERN = "%d{yyyy.MM.dd HH:mm:ss} %-5level [%X{ceTaskUuid}][%logger{20}] %msg%n";
 
   static final String MDC_CE_ACTIVITY_FLAG = "ceActivityFlag";
+  static final String MDC_CE_TASK_UUID = "ceTaskUuid";
   public static final String MAX_LOGS_PROPERTY = "sonar.ce.maxLogsPerTask";
 
   public void initForTask(CeTask task) {
-    // TODO put task UUID in MDC (cf. SONAR-7960)
+    MDC.put(MDC_CE_TASK_UUID, task.getUuid());
   }
 
   public void clearForTask() {
-    // TODO clear task UUID from MDF (cf. SONAR-7960)
+    MDC.remove(MDC_CE_TASK_UUID);
   }
 
   public void logCeActivity(Logger logger, Runnable logProducer) {
index 783d46bac4a75590a2f2b57616db3de0077fb255..7e2125c99fe3deeefdb9c55ca47c717bed20213f 100644 (file)
@@ -30,7 +30,7 @@ import org.sonar.server.platform.ServerLogging;
 
 public abstract class ServerProcessLogging {
   private static final String LOG_LEVEL_PROPERTY = "sonar.log.level";
-  private static final String LOG_FORMAT = "%d{yyyy.MM.dd HH:mm:ss} %-5level XXXX[%logger{20}] %msg%n";
+  private static final String LOG_FORMAT = "%d{yyyy.MM.dd HH:mm:ss} %-5level XXXX[%X{ceTaskUuid}][%logger{20}] %msg%n";
   private final String processName;
   private final LogbackHelper helper = new LogbackHelper();
 
index c72d3b31f6f80649301a0cd0e6bbcca2d1b64da3..b2347ffa8c51bb72cfeabc5ed8ddc69347746fb1 100644 (file)
@@ -40,6 +40,7 @@ import org.junit.rules.TemporaryFolder;
 import org.mockito.Mockito;
 import org.slf4j.MDC;
 import org.sonar.api.utils.log.Logger;
+import org.sonar.ce.queue.CeTask;
 import org.sonar.process.LogbackHelper;
 import org.sonar.process.ProcessProperties;
 import org.sonar.process.Props;
@@ -50,8 +51,10 @@ import static ch.qos.logback.classic.Level.INFO;
 import static ch.qos.logback.classic.Level.TRACE;
 import static ch.qos.logback.classic.Level.WARN;
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 import static org.sonar.ce.log.CeLogging.MDC_CE_ACTIVITY_FLAG;
+import static org.sonar.ce.log.CeLogging.MDC_CE_TASK_UUID;
 
 public class CeLoggingTest {
 
@@ -80,6 +83,30 @@ public class CeLoggingTest {
     MDC.clear();
   }
 
+  @Test
+  public void initForTask_stores_task_uuid_in_MDC() {
+    String uuid = "ce_task_uuid";
+
+    underTest.initForTask(createCeTask(uuid));
+
+    assertThat(MDC.get(MDC_CE_TASK_UUID)).isEqualTo(uuid);
+  }
+
+  private CeTask createCeTask(String uuid) {
+    CeTask ceTask = Mockito.mock(CeTask.class);
+    when(ceTask.getUuid()).thenReturn(uuid);
+    return ceTask;
+  }
+
+  @Test
+  public void clearForTask_removes_task_uuid_from_MDC() {
+    MDC.put(MDC_CE_TASK_UUID, "some_value");
+
+    underTest.clearForTask();
+
+    assertThat(MDC.get(MDC_CE_TASK_UUID)).isNull();
+  }
+
   @Test
   public void createCeConfigurationConfiguration_fails_if_log_directory_is_not_set_in_Props() {
     LogbackHelper helper = new LogbackHelper();
@@ -149,7 +176,7 @@ public class CeLoggingTest {
   }
 
   private static Logger createLogger(Level info) {
-    Logger logger = Mockito.mock(Logger.class);
+    Logger logger = mock(Logger.class);
     when(logger.isDebugEnabled()).thenReturn(DEBUG.isGreaterOrEqual(info));
     when(logger.isTraceEnabled()).thenReturn(TRACE.isGreaterOrEqual(info));
     return logger;
index d28939958f3f68f58c223f7ca76cbf30cd284bcd..e48f66b3db1ad0f965081a0e0b4b49f1d87353b3 100644 (file)
@@ -145,39 +145,21 @@ public class ExecuteVisitorsStepTest {
     assertThat(logs.get(3)).startsWith("  - VisitorC | time=");
   }
 
-  private static class VisitorA implements ComponentVisitor {
-    @Override
-    public Order getOrder() {
-      return Order.PRE_ORDER;
-    }
-
-    @Override
-    public CrawlerDepthLimit getMaxDepth() {
-      return CrawlerDepthLimit.PROJECT;
+  private static class VisitorA extends TypeAwareVisitorAdapter {
+    public VisitorA() {
+      super(CrawlerDepthLimit.PROJECT, Order.PRE_ORDER);
     }
   }
 
-  private static class VisitorB implements ComponentVisitor {
-    @Override
-    public Order getOrder() {
-      return Order.PRE_ORDER;
-    }
-
-    @Override
-    public CrawlerDepthLimit getMaxDepth() {
-      return CrawlerDepthLimit.PROJECT;
+  private static class VisitorB extends TypeAwareVisitorAdapter {
+    public VisitorB() {
+      super(CrawlerDepthLimit.PROJECT, Order.PRE_ORDER);
     }
   }
 
-  private static class VisitorC implements ComponentVisitor {
-    @Override
-    public Order getOrder() {
-      return Order.PRE_ORDER;
-    }
-
-    @Override
-    public CrawlerDepthLimit getMaxDepth() {
-      return CrawlerDepthLimit.PROJECT;
+  private static class VisitorC extends TypeAwareVisitorAdapter {
+    public VisitorC() {
+      super(CrawlerDepthLimit.PROJECT, Order.PRE_ORDER);
     }
   }
 
index 1460f3f6e39bcec7162228a9d567d3d8c36f8f3d..d8182ed2324cf5b5933425af2baba74e89cd05be 100644 (file)
@@ -38,6 +38,7 @@ import org.sonar.server.computation.task.projectanalysis.taskprocessor.ReportTas
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Mockito.doThrow;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verifyZeroInteractions;
 import static org.mockito.Mockito.when;
 
@@ -50,7 +51,7 @@ public class CeWorkerCallableImplTest {
 
   InternalCeQueue queue = mock(InternalCeQueue.class);
   ReportTaskProcessor taskProcessor = mock(ReportTaskProcessor.class);
-  CeLogging ceLogging = mock(CeLogging.class);
+  CeLogging ceLogging = spy(CeLogging.class);
   CeWorkerCallable underTest = new CeWorkerCallableImpl(queue, ceLogging, taskProcessorRepository);
   InOrder inOrder = Mockito.inOrder(ceLogging, taskProcessor, queue);
 
index 5679f75d56fa1f580f4505fc19a389dd8934dc4c..12cad324f57323cfe122f70418a46f56d51c3690 100644 (file)
@@ -40,7 +40,7 @@ class AppLogging {
   static final String CONSOLE_APPENDER = "CONSOLE";
   static final String GOBBLER_LOGGER = "gobbler";
   static final String GOBBLER_APPENDER = "GOBBLER";
-  static final String APP_PATTERN = "%d{yyyy.MM.dd HH:mm:ss} %-5level app[%logger{20}] %msg%n";
+  static final String APP_PATTERN = "%d{yyyy.MM.dd HH:mm:ss} %-5level app[][%logger{20}] %msg%n";
 
   private final LogbackHelper helper = new LogbackHelper();