diff options
author | Jean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com> | 2013-12-04 13:27:42 +0100 |
---|---|---|
committer | Jean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com> | 2013-12-04 14:32:34 +0100 |
commit | c7a874ea870aca0bc54bea6377460e412038aebc (patch) | |
tree | a3271e4da457eb91db558891331ef0138919b233 | |
parent | 81d44900f470b2c3a86ed66d8369f493f8c80e7a (diff) | |
download | sonarqube-c7a874ea870aca0bc54bea6377460e412038aebc.tar.gz sonarqube-c7a874ea870aca0bc54bea6377460e412038aebc.zip |
SONAR-4756 Use sonar.log.console to decide if console logging is enabled
6 files changed, 39 insertions, 71 deletions
diff --git a/sonar-application/src/main/java/org/sonar/application/Webapp.java b/sonar-application/src/main/java/org/sonar/application/Webapp.java index c91d74d0f3f..387d79dbb3a 100644 --- a/sonar-application/src/main/java/org/sonar/application/Webapp.java +++ b/sonar-application/src/main/java/org/sonar/application/Webapp.java @@ -29,6 +29,7 @@ class Webapp { private static final String RAILS_ENV = "rails.env"; private static final String PROPERTY_CONTEXT = "sonar.web.context"; private static final String PROPERTY_LOG_PROFILING_LEVEL = "sonar.log.profilingLevel"; + private static final String PROPERTY_LOG_CONSOLE = "sonar.log.console"; static void configure(Tomcat tomcat, Env env, Props props) { String ctx = getContext(props); @@ -36,6 +37,7 @@ class Webapp { Context context = tomcat.addWebapp(ctx, env.file("web").getAbsolutePath()); context.setConfigFile(env.file("web/META-INF/context.xml").toURI().toURL()); context.addParameter(PROPERTY_LOG_PROFILING_LEVEL, props.of(PROPERTY_LOG_PROFILING_LEVEL, "NONE")); + context.addParameter(PROPERTY_LOG_CONSOLE, props.of(PROPERTY_LOG_CONSOLE, "false")); configureRailsMode(props, context); context.setJarScanner(new NullJarScanner()); diff --git a/sonar-core/src/main/java/org/sonar/core/config/Logback.java b/sonar-core/src/main/java/org/sonar/core/config/Logback.java index 273081f0f98..08d9abf7d15 100644 --- a/sonar-core/src/main/java/org/sonar/core/config/Logback.java +++ b/sonar-core/src/main/java/org/sonar/core/config/Logback.java @@ -20,8 +20,13 @@ package org.sonar.core.config; import ch.qos.logback.classic.Level; +import ch.qos.logback.classic.Logger; import ch.qos.logback.classic.LoggerContext; +import ch.qos.logback.classic.encoder.PatternLayoutEncoder; import ch.qos.logback.classic.joran.JoranConfigurator; +import ch.qos.logback.classic.spi.ILoggingEvent; +import ch.qos.logback.core.Appender; +import ch.qos.logback.core.ConsoleAppender; import ch.qos.logback.core.joran.spi.JoranException; import ch.qos.logback.core.util.StatusPrinter; import org.apache.commons.io.FileUtils; @@ -69,6 +74,9 @@ public class Logback implements BatchComponent, ServerComponent { JoranConfigurator configurator = new JoranConfigurator(); configurator.setContext(configureContext(lc, substitutionVariables)); configurator.doConfigure(input); + if (isConsoleEnabled(substitutionVariables)) { + ((Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME)).addAppender(consoleAppender(lc)); + } } catch (JoranException e) { // StatusPrinter will handle this } finally { @@ -85,6 +93,22 @@ public class Logback implements BatchComponent, ServerComponent { return context; } + private static Boolean isConsoleEnabled(Map<String, String> substitutionVariables) { + return Boolean.valueOf(substitutionVariables.get("CONSOLE_ENABLED")); + } + + private static Appender<ILoggingEvent> consoleAppender(LoggerContext context) { + PatternLayoutEncoder encoder = new PatternLayoutEncoder(); + encoder.setPattern("%d{yyyy.MM.dd HH:mm:ss} %-5level %thread [%logger{20}] %X %msg%n"); + encoder.setContext(context); + encoder.start(); + ConsoleAppender<ILoggingEvent> console = new ConsoleAppender<ILoggingEvent>(); + console.setEncoder(encoder); + console.setContext(context); + console.start(); + return console; + } + public void setLoggerLevel(String loggerName, Level level) { ((ch.qos.logback.classic.Logger) LoggerFactory.getLogger(loggerName)).setLevel(level); } diff --git a/sonar-server/pom.xml b/sonar-server/pom.xml index ad87cbc3e1a..e05d4a24015 100644 --- a/sonar-server/pom.xml +++ b/sonar-server/pom.xml @@ -342,26 +342,6 @@ </resources> </configuration> </execution> - <execution> - <id>copy-logback</id> - <phase>process-resources</phase> - <goals> - <goal>copy-resources</goal> - </goals> - <configuration> - <outputDirectory>${project.build.directory}/classes/org/sonar/server/platform</outputDirectory> - <overwrite>true</overwrite> - <resources> - <resource> - <directory>src/dev</directory> - <includes> - <include>logback.xml</include> - </includes> - <filtering>false</filtering> - </resource> - </resources> - </configuration> - </execution> </executions> </plugin> <plugin> @@ -381,7 +361,7 @@ <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.console>true</sonar.log.console> <sonar.log.profilingLevel>FULL</sonar.log.profilingLevel> </systemProperties> </configuration> diff --git a/sonar-server/src/dev/logback.xml b/sonar-server/src/dev/logback.xml deleted file mode 100644 index d0dda9061ac..00000000000 --- a/sonar-server/src/dev/logback.xml +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<configuration> - - <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> - <encoder> - <pattern> - %d{HH:mm:ss.SSS} %-5level %logger{20} %X - %msg%n - </pattern> - </encoder> - </appender> - - <logger name="rails"> - <level value="DEBUG"/> - </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="DEBUG"/> - </logger> - <logger name="java.sql"> - <level value="DEBUG"/> - </logger> - <logger name="java.sql.ResultSet"> - <level value="WARN"/> - </logger> - - <root> - <level value="DEBUG"/> - <appender-ref ref="STDOUT"/> - </root> - -</configuration> diff --git a/sonar-server/src/main/java/org/sonar/server/platform/PlatformLifecycleListener.java b/sonar-server/src/main/java/org/sonar/server/platform/PlatformLifecycleListener.java index b1ba8ad15e6..4d3aaf89a92 100644 --- a/sonar-server/src/main/java/org/sonar/server/platform/PlatformLifecycleListener.java +++ b/sonar-server/src/main/java/org/sonar/server/platform/PlatformLifecycleListener.java @@ -29,6 +29,8 @@ import javax.servlet.ServletContextListener; import java.util.Map; +import static org.apache.commons.lang.StringUtils.defaultIfEmpty; + public final class PlatformLifecycleListener implements ServletContextListener { public void contextInitialized(ServletContextEvent event) { @@ -63,8 +65,16 @@ public final class PlatformLifecycleListener implements ServletContextListener { * Configure Logback from classpath, with configuration from sonar.properties */ private void configureLogback(ServletContextEvent event) { - Profiling.Level profilingLevel = Profiling.Level.fromConfigString(event.getServletContext().getInitParameter(Profiling.CONFIG_PROFILING_LEVEL)); - Map<String, String> variables = ImmutableMap.of("RAILS_LOGGER_LEVEL", profilingLevel == Profiling.Level.FULL ? "DEBUG" : "WARN"); + Profiling.Level profilingLevel = Profiling.Level.fromConfigString( + event.getServletContext().getInitParameter(Profiling.CONFIG_PROFILING_LEVEL)); + String consoleEnabled = defaultIfEmpty(defaultIfEmpty( + event.getServletContext().getInitParameter("sonar.log.console"), + System.getProperty("sonar.log.console")), + // Line below used in last resort + "false"); + Map<String, String> variables = ImmutableMap.of( + "RAILS_LOGGER_LEVEL", profilingLevel == Profiling.Level.FULL ? "DEBUG" : "WARN", + "CONSOLE_ENABLED", consoleEnabled); 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 index f7f9991eaca..5cc1d0af41b 100644 --- a/sonar-server/src/main/resources/org/sonar/server/platform/logback.xml +++ b/sonar-server/src/main/resources/org/sonar/server/platform/logback.xml @@ -35,11 +35,6 @@ </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="${RAILS_LOGGER_LEVEL}"/> |