]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-8332 fix missing SQ HTTP request ID from Web logs (for good)
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Fri, 18 Nov 2016 08:46:09 +0000 (09:46 +0100)
committerSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Fri, 18 Nov 2016 10:06:20 +0000 (11:06 +0100)
server/sonar-server/src/main/java/org/sonar/server/app/WebServerProcessLogging.java
server/sonar-server/src/main/java/org/sonar/server/platform/web/requestid/RequestIdFilter.java
server/sonar-server/src/main/java/org/sonar/server/platform/web/requestid/RequestIdMDCStorage.java [new file with mode: 0644]
server/sonar-server/src/test/java/org/sonar/server/app/WebServerProcessLoggingTest.java

index 42c6bbfd19cf88bbc2378edd4b8fe6279252fec6..6b101065be5f42267dfda2be067c61231c090610 100644 (file)
@@ -26,6 +26,7 @@ import org.sonar.process.ProcessId;
 import org.sonar.process.Props;
 
 import static org.sonar.process.LogbackHelper.LogDomain;
+import static org.sonar.server.platform.web.requestid.RequestIdMDCStorage.HTTP_REQUEST_ID_MDC_KEY;
 
 /**
  * Configure logback for the Web Server process. Logs are written to file "web.log" in SQ's log directory.
@@ -33,7 +34,7 @@ import static org.sonar.process.LogbackHelper.LogDomain;
 public class WebServerProcessLogging extends ServerProcessLogging {
 
   public WebServerProcessLogging() {
-    super(ProcessId.WEB_SERVER, "%X{ID}");
+    super(ProcessId.WEB_SERVER, "%X{" + HTTP_REQUEST_ID_MDC_KEY + "}");
   }
 
   @Override
index cc2ee2841f7abdd87be4d57a0ef90b5656a00ba0..c7502c51e05e7e3eff9713e576a6797aa694c55f 100644 (file)
@@ -27,15 +27,13 @@ import javax.servlet.FilterConfig;
 import javax.servlet.ServletException;
 import javax.servlet.ServletRequest;
 import javax.servlet.ServletResponse;
-import org.slf4j.MDC;
 import org.sonar.server.platform.Platform;
 
-import static java.util.Objects.requireNonNull;
-
 /**
  * A {@link Filter} that puts and removes the HTTP request ID from the {@link org.slf4j.MDC}.
  */
 public class RequestIdFilter implements Filter {
+
   private final Platform platform;
 
   public RequestIdFilter() {
@@ -72,19 +70,4 @@ public class RequestIdFilter implements Filter {
     // nothing to do
   }
 
-  /**
-   * Wraps MDC calls to store the HTTP request ID in the {@link MDC} into an {@link AutoCloseable}.
-   */
-  static class RequestIdMDCStorage implements AutoCloseable {
-    private static final String HTTP_REQUEST_ID_MDC_KEY = "HTTP_REQUEST_ID";
-
-    public RequestIdMDCStorage(String requestId) {
-      MDC.put(HTTP_REQUEST_ID_MDC_KEY, requireNonNull(requestId, "Request ID can't be null"));
-    }
-
-    @Override
-    public void close() {
-      MDC.remove(HTTP_REQUEST_ID_MDC_KEY);
-    }
-  }
 }
diff --git a/server/sonar-server/src/main/java/org/sonar/server/platform/web/requestid/RequestIdMDCStorage.java b/server/sonar-server/src/main/java/org/sonar/server/platform/web/requestid/RequestIdMDCStorage.java
new file mode 100644 (file)
index 0000000..f9dbb86
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2016 SonarSource SA
+ * mailto:contact AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+package org.sonar.server.platform.web.requestid;
+
+import org.slf4j.MDC;
+
+import static java.util.Objects.requireNonNull;
+
+/**
+ * Wraps MDC calls to store the HTTP request ID in the {@link MDC} into an {@link AutoCloseable}.
+ */
+public class RequestIdMDCStorage implements AutoCloseable {
+  public static final String HTTP_REQUEST_ID_MDC_KEY = "HTTP_REQUEST_ID";
+
+  RequestIdMDCStorage(String requestId) {
+    MDC.put(HTTP_REQUEST_ID_MDC_KEY, requireNonNull(requestId, "Request ID can't be null"));
+  }
+
+  @Override
+  public void close() {
+    MDC.remove(HTTP_REQUEST_ID_MDC_KEY);
+  }
+}
index 4cf2d80ea33eede088d7435705da9d55651fe808..14bd48fbd21058ee47e7f724242552eda63b69a2 100644 (file)
@@ -85,7 +85,7 @@ public class WebServerProcessLoggingTest {
     assertThat(fileAppender.getFile()).isEqualTo(new File(logDir, "web.log").getAbsolutePath());
     assertThat(fileAppender.getEncoder()).isInstanceOf(PatternLayoutEncoder.class);
     PatternLayoutEncoder encoder = (PatternLayoutEncoder) fileAppender.getEncoder();
-    assertThat(encoder.getPattern()).isEqualTo("%d{yyyy.MM.dd HH:mm:ss} %-5level web[%X{ID}][%logger{20}] %msg%n");
+    assertThat(encoder.getPattern()).isEqualTo("%d{yyyy.MM.dd HH:mm:ss} %-5level web[%X{HTTP_REQUEST_ID}][%logger{20}] %msg%n");
   }
 
   @Test