oleewere closed pull request #35: AMBARI-24935. Log Search: enable/disable 
request audit logging for jetty
URL: https://github.com/apache/ambari-logsearch/pull/35
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git 
a/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/LogSearchHttpConfig.java
 
b/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/LogSearchHttpConfig.java
index 39d809545f..37bc7326fe 100644
--- 
a/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/LogSearchHttpConfig.java
+++ 
b/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/LogSearchHttpConfig.java
@@ -67,6 +67,16 @@
   @Value("${logsearch.session.timeout:30}")
   private Integer sessionTimeout;
 
+  @LogSearchPropertyDescription(
+    name = "logsearch.jetty.access.log.enabled",
+    description = "Enable jetty access logs",
+    examples = {"true"},
+    defaultValue = "false",
+    sources = {LOGSEARCH_PROPERTIES_FILE}
+  )
+  @Value("${logsearch.jetty.access.log.enabled:false}")
+  private boolean useAccessLogs;
+
   public String getProtocol() {
     return protocol;
   }
@@ -98,4 +108,12 @@ public Integer getSessionTimeout() {
   public void setSessionTimeout(Integer sessionTimeout) {
     this.sessionTimeout = sessionTimeout;
   }
+
+  public boolean isUseAccessLogs() {
+    return useAccessLogs;
+  }
+
+  public void setUseAccessLogs(boolean useAccessLogs) {
+    this.useAccessLogs = useAccessLogs;
+  }
 }
diff --git 
a/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/LogSearchWebServerCustomizer.java
 
b/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/LogSearchWebServerCustomizer.java
index fb838299eb..1ca0a81067 100644
--- 
a/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/LogSearchWebServerCustomizer.java
+++ 
b/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/LogSearchWebServerCustomizer.java
@@ -19,7 +19,11 @@
 package org.apache.ambari.logsearch.conf;
 
 import org.apache.ambari.logsearch.configurer.SslConfigurer;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.core.LoggerContext;
+import org.apache.logging.log4j.core.config.Configuration;
 import org.eclipse.jetty.server.Connector;
+import org.eclipse.jetty.server.NCSARequestLog;
 import org.eclipse.jetty.server.ServerConnector;
 import org.eclipse.jetty.util.ssl.SslContextFactory;
 import org.springframework.boot.autoconfigure.web.ServerProperties;
@@ -29,15 +33,16 @@
 import org.springframework.stereotype.Component;
 
 import javax.inject.Inject;
+import java.nio.file.Paths;
 import java.time.Duration;
+import java.util.List;
+import java.util.Map;
 
 import static 
org.apache.ambari.logsearch.common.LogSearchConstants.LOGSEARCH_SESSION_ID;
 
 @Component
 public class LogSearchWebServerCustomizer implements 
WebServerFactoryCustomizer<JettyServletWebServerFactory> {
 
-  private static final Integer SESSION_TIMEOUT = 30;
-
   @Inject
   private ServerProperties serverProperties;
 
@@ -51,6 +56,7 @@
   public void customize(JettyServletWebServerFactory webServerFactory) {
     
serverProperties.getServlet().getSession().setTimeout(Duration.ofMinutes(logSearchHttpConfig.getSessionTimeout()));
     
serverProperties.getServlet().getSession().getCookie().setName(LOGSEARCH_SESSION_ID);
+
     if ("https".equals(logSearchHttpConfig.getProtocol())) {
       sslConfigurer.ensureStorePasswords();
       sslConfigurer.loadKeystore();
@@ -63,5 +69,19 @@ public void customize(JettyServletWebServerFactory 
webServerFactory) {
     } else {
       webServerFactory.setPort(logSearchHttpConfig.getHttpPort());
     }
+    if (logSearchHttpConfig.isUseAccessLogs()) {
+      webServerFactory.addServerCustomizers((JettyServerCustomizer) server -> {
+        LoggerContext context = (LoggerContext) LogManager.getContext(false);
+        Configuration configuration = context.getConfiguration();
+        String logDir = 
configuration.getStrSubstitutor().getVariableResolver().lookup("log-path");
+        String logFileNameSuffix = "logsearch-jetty-yyyy_mm_dd.request.log";
+        String logFileName = logDir == null ? logFileNameSuffix : 
Paths.get(logDir, logFileNameSuffix).toString();
+        NCSARequestLog requestLog = new NCSARequestLog(logFileName);
+        requestLog.setAppend(true);
+        requestLog.setExtended(false);
+        requestLog.setLogTimeZone("GMT");
+        server.setRequestLog(requestLog);
+      });
+    }
   }
 }
diff --git a/ambari-logsearch-server/src/main/resources/log4j2.yml 
b/ambari-logsearch-server/src/main/resources/log4j2.yml
index 81a26cd0a9..65064e616f 100644
--- a/ambari-logsearch-server/src/main/resources/log4j2.yml
+++ b/ambari-logsearch-server/src/main/resources/log4j2.yml
@@ -52,8 +52,8 @@ Configutation:
       DefaultRollOverStrategy:
         max: 10
     - name: AuditFile_Appender
-      fileName: ${log-path}/logsearch-audit.json
-      filePattern: "logsearch-audit.json.%d{yyyy-MM-dd-hh-mm}.gz"
+      fileName: ${log-path}/logsearch-solr-audit.json
+      filePattern: "logsearch-solr-audit.json.%d{yyyy-MM-dd-hh-mm}.gz"
       ignoreExceptions: false
       LogSearchJsonLayout:
         charset: UTF-8
@@ -63,8 +63,8 @@ Configutation:
       DefaultRollOverStrategy:
         max: 10
     - name: PerformanceFile_Appender
-      fileName: ${log-path}/logsearch-performance.json
-      filePattern: "logsearch-perf.json.%d{yyyy-MM-dd-hh-mm}.gz"
+      fileName: ${log-path}/logsearch-solr-performance.json
+      filePattern: "logsearch-solr-performance.json.%d{yyyy-MM-dd-hh-mm}.gz"
       LogSearchJsonLayout:
         charset: UTF-8
       Policies:


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to