]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-4756 Move log level configuration to sonar-server - WIP
authorJean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com>
Fri, 29 Nov 2013 17:38:08 +0000 (18:38 +0100)
committerJean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com>
Mon, 2 Dec 2013 14:54:24 +0000 (15:54 +0100)
sonar-application/src/main/assembly/conf/logback.xml [deleted file]
sonar-application/src/main/java/org/sonar/application/Webapp.java
sonar-server/pom.xml
sonar-server/src/main/java/org/sonar/server/platform/PlatformLifecycleListener.java
sonar-server/src/main/resources/org/sonar/server/platform/logback.xml [new file with mode: 0644]

diff --git a/sonar-application/src/main/assembly/conf/logback.xml b/sonar-application/src/main/assembly/conf/logback.xml
deleted file mode 100644 (file)
index 311233b..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<!--
-  Logging configuration.
-  By default logs are generated in logs/sonar.log.
-
-  See http://logback.qos.ch/manual/configuration.html
--->
-<configuration debug="false">
-  <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator"/>
-
-  <appender name="LOGFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
-    <File>${SONAR_HOME}/logs/sonar.log</File>
-    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
-      <param name="FileNamePattern" value="${SONAR_HOME}/logs/sonar.%i.log"/>
-      <param name="MinIndex" value="1"/>
-      <param name="MaxIndex" value="3"/>
-    </rollingPolicy>
-    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
-      <param name="MaxFileSize" value="5MB"/>
-    </triggeringPolicy>
-    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
-      <!-- Use %d{yyyy.MM.dd HH:mm:ss.SSS} to display milliseconds -->
-      <pattern>
-        %d{yyyy.MM.dd HH:mm:ss} %-5level %thread [%logger{20}] %X %msg%n
-      </pattern>
-    </encoder>
-  </appender>
-
-  <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
-    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
-      <pattern>
-        %d{yyyy.MM.dd HH:mm:ss} %-5level %msg%n
-      </pattern>
-    </encoder>
-  </appender>
-
-  <logger name="console" additivity="false">
-    <level value="INFO"/>
-    <appender-ref ref="CONSOLE"/>
-  </logger>
-
-  <!-- Display Rails warnings and errors  -->
-  <logger name="rails">
-    <level value="WARN"/>
-  </logger>
-
-  <logger name="org.hibernate.cache.ReadWriteCache">
-    <!-- removing "An item was expired by the cache while it was locked (increase your cache timeout)" msg -->
-    <level value="ERROR"/>
-  </logger>
-  <logger name="org.hibernate">
-    <level value="WARN"/>
-  </logger>
-
-  <!-- Display SQL requests and results by setting the following loggers to level DEBUG -->
-  <logger name="org.hibernate.SQL">
-    <level value="WARN"/>
-  </logger>
-  <logger name="org.apache.ibatis">
-    <level value="WARN"/>
-  </logger>
-  <logger name="java.sql">
-    <level value="WARN"/>
-  </logger>
-  <logger name="java.sql.ResultSet">
-    <level value="WARN"/>
-  </logger>
-
-  <!-- Execution of measure filters -->
-  <logger name="org.sonar.MEASURE_FILTER">
-    <level value="WARN"/>
-  </logger>
-
-  <!-- Turn off ElasticSearch logging -->
-  <logger name="org.elasticsearch">
-    <level value="OFF"/>
-  </logger>
-  <logger name="org.elasticsearch.node">
-    <level value="INFO"/>
-  </logger>
-  <logger name="org.elasticsearch.http">
-    <level value="INFO"/>
-  </logger>
-  <!-- ElasticSearch profiling information -->
-  <!--
-  <logger name="org.sonar.server.search">
-    <level value="DEBUG"/>
-  </logger>
-  -->
-
-  <!-- Export of dry run database -->
-  <!--
-  <logger name="org.sonar.core.persistence.DbTemplate">
-    <level value="DEBUG"/>
-  </logger>
-  <logger name="org.sonar.core.persistence.DryRunDatabaseFactory">
-    <level value="DEBUG"/>
-  </logger>
-  -->
-
-  <root>
-    <level value="INFO"/>
-    <appender-ref ref="LOGFILE"/>
-  </root>
-
-</configuration>
index c49bc73112a7628b97cfaca3e7729b3ec840085d..a84e705fcaface0e12151a27a02fe0b7be3eccd5 100644 (file)
@@ -28,12 +28,14 @@ class Webapp {
   private static final String JRUBY_MAX_RUNTIMES = "jruby.max.runtimes";
   private static final String RAILS_ENV = "rails.env";
   private static final String PROPERTY_CONTEXT = "sonar.web.context";
+  private static final String PROPERTY_LOG_VERBOSE = "sonar.log.verbose";
 
   static void configure(Tomcat tomcat, Env env, Props props) {
     String ctx = getContext(props);
     try {
       Context context = tomcat.addWebapp(ctx, env.file("web").getAbsolutePath());
       context.setConfigFile(env.file("web/META-INF/context.xml").toURI().toURL());
+      context.addParameter(PROPERTY_LOG_VERBOSE, props.of(PROPERTY_LOG_VERBOSE, "false"));
       configureRailsMode(props, context);
       context.setJarScanner(new NullJarScanner());
 
index 7ce3393276f56c2e9cd0575715a912efac3d6ce7..20682bf82269a8697afc58ea3ee70bd01ed36ada 100644 (file)
                 <sonar.runtime.mode>development</sonar.runtime.mode>
                 <sonar.es.http.host>127.0.0.1</sonar.es.http.host>
                 <sonar.es.http.port>9200</sonar.es.http.port>
+                <sonar.log.verbose>true</sonar.log.verbose>
                 <sonar.log.profilingLevel>FULL</sonar.log.profilingLevel>
               </systemProperties>
             </configuration>
index 0ae48df97cc3af3ffbe2e0594ddce12b773cb93e..c4ea1c64db235cdb597db18bbe744c11852f695e 100644 (file)
  */
 package org.sonar.server.platform;
 
+import com.google.common.collect.ImmutableMap;
 import org.slf4j.LoggerFactory;
 import org.sonar.core.config.Logback;
 
 import javax.servlet.ServletContextEvent;
 import javax.servlet.ServletContextListener;
-import java.io.File;
-import java.util.Collections;
+
+import java.util.Map;
 
 public final class PlatformLifecycleListener implements ServletContextListener {
 
   public void contextInitialized(ServletContextEvent event) {
     try {
-      configureLogback();
+      configureLogback(event);
       Platform.getInstance().init(event.getServletContext());
       Platform.getInstance().start();
     } catch (Throwable t) {
@@ -58,9 +59,11 @@ public final class PlatformLifecycleListener implements ServletContextListener {
   }
 
   /**
-   * Configure Logback with $SONAR_HOME/conf/logback.xml
+   * Configure Logback from classpath, with configuration from sonar.properties
    */
-  private void configureLogback() {
-    Logback.configure(new File(SonarHome.getHome(), "conf/logback.xml"), Collections.<String, String>emptyMap());
+  private void configureLogback(ServletContextEvent event) {
+    boolean sonarLogVerbose = Boolean.valueOf(event.getServletContext().getInitParameter("sonar.log.verbose"));
+    Map<String, String> variables = ImmutableMap.of("ROOT_LOGGER_LEVEL", sonarLogVerbose ? "DEBUG" : "INFO");
+    Logback.configure("/org/sonar/server/platform/logback.xml", variables);
   }
 }
diff --git a/sonar-server/src/main/resources/org/sonar/server/platform/logback.xml b/sonar-server/src/main/resources/org/sonar/server/platform/logback.xml
new file mode 100644 (file)
index 0000000..c3253c6
--- /dev/null
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!--
+  Logging configuration.
+  By default logs are generated in logs/sonar.log.
+
+  See http://logback.qos.ch/manual/configuration.html
+-->
+<configuration debug="false">
+  <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator"/>
+
+  <appender name="LOGFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <File>${SONAR_HOME}/logs/sonar.log</File>
+    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+      <param name="FileNamePattern" value="${SONAR_HOME}/logs/sonar.%i.log"/>
+      <param name="MinIndex" value="1"/>
+      <param name="MaxIndex" value="3"/>
+    </rollingPolicy>
+    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+      <param name="MaxFileSize" value="5MB"/>
+    </triggeringPolicy>
+    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+      <!-- Use %d{yyyy.MM.dd HH:mm:ss.SSS} to display milliseconds -->
+      <pattern>
+        %d{yyyy.MM.dd HH:mm:ss} %-5level %thread [%logger{20}] %X %msg%n
+      </pattern>
+    </encoder>
+  </appender>
+
+  <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+      <pattern>
+        %d{yyyy.MM.dd HH:mm:ss} %-5level %msg%n
+      </pattern>
+    </encoder>
+  </appender>
+
+  <logger name="console" additivity="false">
+    <level value="INFO"/>
+    <appender-ref ref="CONSOLE"/>
+  </logger>
+
+  <!-- Display Rails warnings and errors  -->
+  <logger name="rails">
+    <level value="WARN"/>
+  </logger>
+
+  <logger name="org.hibernate.cache.ReadWriteCache">
+    <!-- removing "An item was expired by the cache while it was locked (increase your cache timeout)" msg -->
+    <level value="ERROR"/>
+  </logger>
+  <logger name="org.hibernate">
+    <level value="WARN"/>
+  </logger>
+
+  <!-- Display SQL requests and results by setting the following loggers to level DEBUG -->
+  <logger name="org.hibernate.SQL">
+    <level value="WARN"/>
+  </logger>
+  <logger name="org.apache.ibatis">
+    <level value="WARN"/>
+  </logger>
+  <logger name="java.sql">
+    <level value="WARN"/>
+  </logger>
+  <logger name="java.sql.ResultSet">
+    <level value="WARN"/>
+  </logger>
+
+  <!-- Execution of measure filters -->
+  <logger name="org.sonar.MEASURE_FILTER">
+    <level value="WARN"/>
+  </logger>
+
+  <!-- Turn off ElasticSearch logging -->
+  <logger name="org.elasticsearch">
+    <level value="OFF"/>
+  </logger>
+  <logger name="org.elasticsearch.node">
+    <level value="INFO"/>
+  </logger>
+  <logger name="org.elasticsearch.http">
+    <level value="INFO"/>
+  </logger>
+
+  <root>
+    <level value="${ROOT_LOGGER_LEVEL}"/>
+    <appender-ref ref="LOGFILE"/>
+  </root>
+
+</configuration>