diff --git a/assembly/assembly-ide-war/pom.xml b/assembly/assembly-ide-war/pom.xml index 36a8587ef1..0da27d8f1b 100644 --- a/assembly/assembly-ide-war/pom.xml +++ b/assembly/assembly-ide-war/pom.xml @@ -56,6 +56,16 @@ org.eclipse.che.core che-core-commons-j2ee + + org.eclipse.che.core + che-core-commons-logback + + + che-core-api-core + org.eclipse.che.core + + + javax.servlet javax.servlet-api @@ -112,6 +122,7 @@ org.eclipse.che:che-ide-gwt-app org.eclipse.che.core:che-core-commons-j2ee + org.eclipse.che.core:che-core-commons-logback ch.qos.logback:logback-classic diff --git a/core/commons/che-core-commons-logback/pom.xml b/core/commons/che-core-commons-logback/pom.xml index 158796113f..2c95507cde 100644 --- a/core/commons/che-core-commons-logback/pom.xml +++ b/core/commons/che-core-commons-logback/pom.xml @@ -22,6 +22,14 @@ jar Che Core :: Commons :: Commons Logback + + ch.qos.logback + logback-classic + + + ch.qos.logback + logback-core + javax.inject javax.inject diff --git a/core/commons/che-core-commons-logback/src/main/java/org/eclipse/che/commons/logback/EnvironmentVariablesLogLevelPropagator.java b/core/commons/che-core-commons-logback/src/main/java/org/eclipse/che/commons/logback/EnvironmentVariablesLogLevelPropagator.java new file mode 100644 index 0000000000..1a37f5d2e5 --- /dev/null +++ b/core/commons/che-core-commons-logback/src/main/java/org/eclipse/che/commons/logback/EnvironmentVariablesLogLevelPropagator.java @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2012-2018 Red Hat, Inc. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Red Hat, Inc. - initial API and implementation + */ +package org.eclipse.che.commons.logback; + +import ch.qos.logback.classic.Level; +import ch.qos.logback.classic.Logger; +import ch.qos.logback.classic.LoggerContext; +import ch.qos.logback.classic.spi.LoggerContextListener; +import ch.qos.logback.core.spi.ContextAwareBase; +import ch.qos.logback.core.spi.LifeCycle; +import java.util.Arrays; + +/** + * Class searches environment variable CHE_LOGGER_CONFIG Value of this variable is expected in such + * format: + * + *

CHE_LOGGER_CONFIG=logger1_name=logger1_level,logger2_name=logger2_level + * + *

In case if some logger name or logger level are omitted this pair will be silently ignored. + */ +public class EnvironmentVariablesLogLevelPropagator extends ContextAwareBase + implements LoggerContextListener, LifeCycle { + + private boolean isStarted; + + @Override + public void start() { + + String config = System.getenv("CHE_LOGGER_CONFIG"); + if (config != null && !config.isEmpty()) { + Arrays.stream(config.split(",")).map(String::trim).forEach(this::setLoggerLevel); + } + isStarted = true; + } + + private void setLoggerLevel(String loggerConfig) { + String[] parts = loggerConfig.split("=", 2); + + if (parts.length < 2) { + return; + } + String loggerName = parts[0]; + String levelStr = parts[1]; + + if (levelStr.isEmpty() || loggerName.isEmpty()) { + return; + } + + loggerName = loggerName.trim(); + levelStr = levelStr.trim(); + + LoggerContext lc = (LoggerContext) context; + + Logger logger = lc.getLogger(loggerName); + if ("null".equalsIgnoreCase(levelStr)) { + logger.setLevel(null); + } else { + Level level = Level.toLevel(levelStr, null); + if (level != null) { + logger.setLevel(level); + } + } + } + + @Override + public void stop() { + isStarted = false; + } + + @Override + public boolean isStarted() { + return isStarted; + } + + @Override + public boolean isResetResistant() { + return false; + } + + @Override + public void onStart(LoggerContext context) {} + + @Override + public void onReset(LoggerContext context) {} + + @Override + public void onStop(LoggerContext context) {} + + @Override + public void onLevelChange(Logger logger, Level level) {} +} diff --git a/wsagent/che-wsagent-core/pom.xml b/wsagent/che-wsagent-core/pom.xml index 9003a3c82d..c9e915dbb4 100644 --- a/wsagent/che-wsagent-core/pom.xml +++ b/wsagent/che-wsagent-core/pom.xml @@ -91,6 +91,16 @@ org.eclipse.che.core che-core-commons-lang + + org.eclipse.che.core + che-core-commons-logback + + + che-core-api-core + org.eclipse.che.core + + + org.eclipse.che.core che-core-commons-schedule @@ -162,6 +172,7 @@ org.slf4j:jul-to-slf4j org.slf4j:jcl-over-slf4j org.slf4j:log4j-over-slf4j + org.eclipse.che.core:che-core-commons-logback