aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com>2013-12-04 13:27:42 +0100
committerJean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com>2013-12-04 14:32:34 +0100
commitc7a874ea870aca0bc54bea6377460e412038aebc (patch)
treea3271e4da457eb91db558891331ef0138919b233
parent81d44900f470b2c3a86ed66d8369f493f8c80e7a (diff)
downloadsonarqube-c7a874ea870aca0bc54bea6377460e412038aebc.tar.gz
sonarqube-c7a874ea870aca0bc54bea6377460e412038aebc.zip
SONAR-4756 Use sonar.log.console to decide if console logging is enabled
-rw-r--r--sonar-application/src/main/java/org/sonar/application/Webapp.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/config/Logback.java24
-rw-r--r--sonar-server/pom.xml22
-rw-r--r--sonar-server/src/dev/logback.xml43
-rw-r--r--sonar-server/src/main/java/org/sonar/server/platform/PlatformLifecycleListener.java14
-rw-r--r--sonar-server/src/main/resources/org/sonar/server/platform/logback.xml5
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}"/>