@@ -22,7 +22,7 @@ | |||
<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 | |||
%d{yyyy.MM.dd HH:mm:ss} %-5level [%logger{20}] %X %msg%n | |||
</pattern> | |||
</encoder> | |||
</appender> |
@@ -75,7 +75,9 @@ public class Logback implements BatchComponent, ServerComponent { | |||
configurator.setContext(configureContext(lc, substitutionVariables)); | |||
configurator.doConfigure(input); | |||
if (isConsoleEnabled(substitutionVariables)) { | |||
((Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME)).addAppender(consoleAppender(lc)); | |||
Logger rootLogger = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); | |||
rootLogger.setAdditive(false); | |||
rootLogger.addAppender(consoleAppender(lc, substitutionVariables)); | |||
} | |||
} catch (JoranException e) { | |||
// StatusPrinter will handle this | |||
@@ -97,9 +99,9 @@ public class Logback implements BatchComponent, ServerComponent { | |||
return Boolean.valueOf(substitutionVariables.get("CONSOLE_ENABLED")); | |||
} | |||
private static Appender<ILoggingEvent> consoleAppender(LoggerContext context) { | |||
private static Appender<ILoggingEvent> consoleAppender(LoggerContext context, Map<String, String> substitutionVariables) { | |||
PatternLayoutEncoder encoder = new PatternLayoutEncoder(); | |||
encoder.setPattern("%d{yyyy.MM.dd HH:mm:ss} %-5level %thread [%logger{20}] %X %msg%n"); | |||
encoder.setPattern(substitutionVariables.get("CONSOLE_LOGGING_FORMAT")); | |||
encoder.setContext(context); | |||
encoder.start(); | |||
ConsoleAppender<ILoggingEvent> console = new ConsoleAppender<ILoggingEvent>(); |
@@ -20,7 +20,6 @@ | |||
package org.sonar.server.platform; | |||
import com.google.common.collect.ImmutableMap; | |||
import org.slf4j.LoggerFactory; | |||
import org.sonar.core.config.Logback; | |||
import org.sonar.core.profiling.Profiling; | |||
@@ -36,6 +35,18 @@ public final class PlatformLifecycleListener implements ServletContextListener { | |||
private static final String CONFIG_LOG_CONSOLE = "sonar.log.console"; | |||
private static final String LOG_COMMON_PREFIX = "%d{yyyy.MM.dd HH:mm:ss} %-5level "; | |||
private static final String LOG_COMMON_SUFFIX = "%msg%n"; | |||
private static final String LOG_LOGFILE_SPECIFIC_PART = "[%logger{20}] %X "; | |||
private static final String LOG_FULL_SPECIFIC_PART = "%thread "; | |||
private static final String LOGFILE_STANDARD_LOGGING_FORMAT = LOG_COMMON_PREFIX + LOG_LOGFILE_SPECIFIC_PART + LOG_COMMON_SUFFIX; | |||
private static final String LOGFILE_FULL_LOGGING_FORMAT = LOG_COMMON_PREFIX + LOG_FULL_SPECIFIC_PART + LOG_LOGFILE_SPECIFIC_PART + LOG_COMMON_SUFFIX; | |||
private static final String CONSOLE_STANDARD_LOGGING_FORMAT = LOG_COMMON_PREFIX + LOG_COMMON_SUFFIX; | |||
private static final String CONSOLE_FULL_LOGGING_FORMAT = LOG_COMMON_PREFIX + LOG_FULL_SPECIFIC_PART + LOG_COMMON_SUFFIX; | |||
public void contextInitialized(ServletContextEvent event) { | |||
try { | |||
configureLogback(event); | |||
@@ -79,6 +90,8 @@ public final class PlatformLifecycleListener implements ServletContextListener { | |||
"false"); | |||
Map<String, String> variables = ImmutableMap.of( | |||
"RAILS_LOGGER_LEVEL", profilingLevel == Profiling.Level.FULL ? "DEBUG" : "WARN", | |||
"LOGFILE_LOGGING_FORMAT", profilingLevel == Profiling.Level.FULL ? LOGFILE_FULL_LOGGING_FORMAT : LOGFILE_STANDARD_LOGGING_FORMAT, | |||
"CONSOLE_LOGGING_FORMAT", profilingLevel == Profiling.Level.FULL ? CONSOLE_FULL_LOGGING_FORMAT : CONSOLE_STANDARD_LOGGING_FORMAT, | |||
"CONSOLE_ENABLED", consoleEnabled); | |||
Logback.configure("/org/sonar/server/platform/logback.xml", variables); | |||
} |
@@ -22,7 +22,7 @@ | |||
<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 | |||
${LOGFILE_LOGGING_FORMAT} | |||
</pattern> | |||
</encoder> | |||
</appender> | |||
@@ -30,7 +30,7 @@ | |||
<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 | |||
${CONSOLE_LOGGING_FORMAT} | |||
</pattern> | |||
</encoder> | |||
</appender> |