]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-8383 expose association process -> log filename
authorSimon Brandhof <simon.brandhof@sonarsource.com>
Wed, 16 Nov 2016 14:16:56 +0000 (15:16 +0100)
committerSimon Brandhof <simon.brandhof@sonarsource.com>
Wed, 16 Nov 2016 23:14:11 +0000 (00:14 +0100)
server/sonar-process/src/main/java/org/sonar/process/LogbackHelper.java
server/sonar-process/src/main/java/org/sonar/process/ProcessId.java
server/sonar-search/src/main/java/org/sonar/search/SearchLogging.java
server/sonar-server/src/main/java/org/sonar/server/app/ServerProcessLogging.java
sonar-application/src/main/java/org/sonar/application/AppLogging.java

index 024c2835330fed31749d27b264d0399747c27265..cd7ae2dae59a2b49cdc4786448d821f23d2fde71 100644 (file)
@@ -94,46 +94,37 @@ public class LogbackHelper {
   }
 
   public static final class RootLoggerConfig {
-    private final String processName;
+    private final ProcessId processId;
     private final String threadIdFieldPattern;
-    private final String fileNamePrefix;
 
     private RootLoggerConfig(Builder builder) {
-      this.processName = builder.processName;
+      this.processId = requireNonNull(builder.processId);
       this.threadIdFieldPattern = builder.threadIdFieldPattern;
-      this.fileNamePrefix = builder.fileNamePrefix;
     }
 
     public static Builder newRootLoggerConfigBuilder() {
       return new Builder();
     }
 
-    public String getProcessName() {
-      return processName;
+    public ProcessId getProcessId() {
+      return processId;
     }
 
     String getThreadIdFieldPattern() {
       return threadIdFieldPattern;
     }
 
-    String getFileNamePrefix() {
-      return fileNamePrefix;
-    }
-
     public static final class Builder {
       @CheckForNull
-      private String processName;
+      public ProcessId processId;
       private String threadIdFieldPattern = "";
-      @CheckForNull
-      private String fileNamePrefix;
 
       private Builder() {
         // prevents instantiation outside RootLoggerConfig, use static factory method
       }
 
-      public Builder setProcessName(String processName) {
-        checkProcessName(processName);
-        this.processName = processName;
+      public Builder setProcessId(ProcessId processId) {
+        this.processId = processId;
         return this;
       }
 
@@ -142,27 +133,7 @@ public class LogbackHelper {
         return this;
       }
 
-      public Builder setFileNamePrefix(String fileNamePrefix) {
-        checkFileName(fileNamePrefix);
-        this.fileNamePrefix = fileNamePrefix;
-        return this;
-      }
-
-      private static void checkFileName(String fileName) {
-        if (requireNonNull(fileName, "fileNamePrefix can't be null").isEmpty()) {
-          throw new IllegalArgumentException("fileNamePrefix can't be empty");
-        }
-      }
-
-      private static void checkProcessName(String fileName) {
-        if (requireNonNull(fileName, "processName can't be null").isEmpty()) {
-          throw new IllegalArgumentException("processName can't be empty");
-        }
-      }
-
       public RootLoggerConfig build() {
-        checkProcessName(this.processName);
-        checkFileName(this.fileNamePrefix);
         return new RootLoggerConfig(this);
       }
     }
@@ -170,7 +141,7 @@ public class LogbackHelper {
 
   public String buildLogPattern(LogbackHelper.RootLoggerConfig config) {
     return LOG_FORMAT
-      .replace(PROCESS_NAME_PLACEHOLDER, config.getProcessName())
+      .replace(PROCESS_NAME_PLACEHOLDER, config.getProcessId().getKey())
       .replace(THREAD_ID_PLACEHOLDER, config.getThreadIdFieldPattern());
   }
 
@@ -197,7 +168,7 @@ public class LogbackHelper {
    * Make logback configuration for a process to push all its logs to a log file.
    * <p>
    * <ul>
-   * <li>the file's name will use the prefix defined in {@link RootLoggerConfig#getFileNamePrefix()}.</li>
+   * <li>the file's name will use the prefix defined in {@link RootLoggerConfig#getProcessId()#getLogFilenamePrefix()}.</li>
    * <li>the file will follow the rotation policy defined in property {@link #ROLLING_POLICY_PROPERTY} and
    * the max number of files defined in property {@link #MAX_FILES_PROPERTY}</li>
    * <li>the logs will follow the specified log pattern</li>
@@ -215,8 +186,8 @@ public class LogbackHelper {
   }
 
   public FileAppender<ILoggingEvent> newFileAppender(LoggerContext ctx, Props props, LogbackHelper.RootLoggerConfig config, String logPattern) {
-    RollingPolicy rollingPolicy = createRollingPolicy(ctx, props, config.getFileNamePrefix());
-    FileAppender<ILoggingEvent> fileAppender = rollingPolicy.createAppender("file_" + config.getFileNamePrefix());
+    RollingPolicy rollingPolicy = createRollingPolicy(ctx, props, config.getProcessId().getLogFilenamePrefix());
+    FileAppender<ILoggingEvent> fileAppender = rollingPolicy.createAppender("file_" + config.getProcessId().getLogFilenamePrefix());
     fileAppender.setContext(ctx);
     PatternLayoutEncoder fileEncoder = new PatternLayoutEncoder();
     fileEncoder.setContext(ctx);
index 9189ada6cd25c80c88054ff40a258757d208e2d0..37db2a08f32748688a15d68588cb6a27c05809d2 100644 (file)
@@ -21,14 +21,20 @@ package org.sonar.process;
 
 public enum ProcessId {
 
-  APP("app", 0), ELASTICSEARCH("es", 1), WEB_SERVER("web", 2), COMPUTE_ENGINE("ce", 3);
+  APP("app", 0, "sonar"),
+  ELASTICSEARCH("es", 1, "es"),
+  WEB_SERVER("web", 2, "web"),
+  COMPUTE_ENGINE("ce", 3, "ce");
 
   private final String key;
   private final int ipcIndex;
+  private final String logFilenamePrefix;
 
-  ProcessId(String key, int ipcIndex) {
+
+  ProcessId(String key, int ipcIndex, String logFilenamePrefix) {
     this.key = key;
     this.ipcIndex = ipcIndex;
+    this.logFilenamePrefix = logFilenamePrefix;
   }
 
   public String getKey() {
@@ -42,11 +48,19 @@ public enum ProcessId {
     return ipcIndex;
   }
 
+  /**
+   * Prefix of log file, for example "web" for file "web.log"
+   */
+  public String getLogFilenamePrefix() {
+    return logFilenamePrefix;
+  }
+
   @Override
   public String toString() {
     StringBuilder sb = new StringBuilder("[");
     sb.append("key='").append(key).append('\'');
     sb.append(", ipcIndex=").append(ipcIndex);
+    sb.append(", logFilenamePrefix=").append(logFilenamePrefix);
     sb.append(']');
     return sb.toString();
   }
index a7167c9b33e31611304b850cdf76ce02853ec2a4..04136ab0698c18c6ff64c82f6ec5c3043076b326 100644 (file)
@@ -21,6 +21,7 @@ package org.sonar.search;
 
 import ch.qos.logback.classic.LoggerContext;
 import org.sonar.process.LogbackHelper;
+import org.sonar.process.ProcessId;
 import org.sonar.process.Props;
 
 import static org.sonar.process.LogbackHelper.RootLoggerConfig.newRootLoggerConfigBuilder;
@@ -33,7 +34,7 @@ public class SearchLogging {
     LoggerContext ctx = helper.getRootContext();
     ctx.reset();
 
-    LogbackHelper.RootLoggerConfig config = newRootLoggerConfigBuilder().setProcessName("es").setFileNamePrefix("es").build();
+    LogbackHelper.RootLoggerConfig config = newRootLoggerConfigBuilder().setProcessId(ProcessId.ELASTICSEARCH).build();
 
     String logPattern = helper.buildLogPattern(config);
     helper.configureGlobalFileLog(props, config, logPattern);
index 0936cd501f07d9240b7db59ee2de64cdd100285f..c8c0d9bc6b44b3385de1a5ffacf407e786c1fc07 100644 (file)
@@ -65,9 +65,8 @@ public abstract class ServerProcessLogging {
 
   private void configureRootLogger(Props props) {
     LogbackHelper.RootLoggerConfig config = newRootLoggerConfigBuilder()
-      .setProcessName(processId.getKey())
+      .setProcessId(processId)
       .setThreadIdFieldPattern(threadIdFieldPattern)
-      .setFileNamePrefix(processId.getKey())
       .build();
     String logPattern = helper.buildLogPattern(config);
 
index 6a5586b93817f649e623bdba6af55db590126cb2..69ba954e4f1fdeac0332578a069b3302724ff8ec 100644 (file)
@@ -109,8 +109,7 @@ class AppLogging {
   private static final String APP_CONSOLE_APPENDER = "APP_CONSOLE";
   private static final String GOBBLER_PLAIN_CONSOLE = "GOBBLER_CONSOLE";
   private static final LogbackHelper.RootLoggerConfig APP_ROOT_LOGGER_CONFIG = newRootLoggerConfigBuilder()
-    .setProcessName("app")
-    .setFileNamePrefix("sonar")
+    .setProcessId(ProcessId.APP)
     .build();
 
   private final LogbackHelper helper = new LogbackHelper();