From ba5be0332dbf28a3fa4b0e73d4222a1da39b5dfe Mon Sep 17 00:00:00 2001 From: Nik Everett Date: Tue, 16 Feb 2016 08:46:03 -0500 Subject: [PATCH] Remove optional logger wrappers Removes all our logger wrappers except the wrapper for log4j1.2. If you depend on Elasticsearch's jar in your application you'll need to declare log4j 1.2 and/or some bridge to your favorite logger. We did this to simplify our builds and code. No more commons-logging like log implementation sniffing. No more optional dependency hacks in gradle. We might one day want to use j.u.l instead of log4j. If we do want that we can recover its wrapper by studying this commit. We didn't go directly to j.u.l in this commit because that is a bigger change. Our logging configuration is based on log4j1.2 and people are used to it. So it'd be a much more fraught breaking change to do that conversion. --- .../gradle/plugin/PluginBuildPlugin.groovy | 6 - .../resources/checkstyle_suppressions.xml | 3 - core/build.gradle | 6 +- .../elasticsearch/ElasticsearchException.java | 2 +- ...ransportInstanceSingleOperationAction.java | 2 +- .../shard/TransportSingleShardAction.java | 2 +- .../elasticsearch/bootstrap/Bootstrap.java | 3 +- .../logging/{log4j => }/ConsoleAppender.java | 3 +- .../common/logging/ESLogger.java | 182 +++++++++++++----- .../common/logging/ESLoggerFactory.java | 61 ++---- .../logging/{log4j => }/LogConfigurator.java | 21 +- .../{support => }/LoggerMessageFormat.java | 26 +-- .../elasticsearch/common/logging/Loggers.java | 22 ++- .../logging/{log4j => }/TerminalAppender.java | 2 +- .../common/logging/jdk/ESLogRecord.java | 108 ----------- .../common/logging/jdk/JdkESLogger.java | 163 ---------------- .../logging/jdk/JdkESLoggerFactory.java | 40 ---- .../common/logging/log4j/Log4jESLogger.java | 147 -------------- .../logging/log4j/Log4jESLoggerFactory.java | 41 ---- .../common/logging/slf4j/Slf4jESLogger.java | 179 ----------------- .../logging/slf4j/Slf4jESLoggerFactory.java | 41 ---- .../logging/support/AbstractESLogger.java | 133 ------------- .../percolator/ExtractQueryTermsService.java | 2 +- .../org/elasticsearch/plugins/PluginCli.java | 2 +- .../java/org/elasticsearch/script/Script.java | 2 +- ...jESLoggerTests.java => ESLoggerTests.java} | 32 ++- .../LoggingConfigurationTests.java | 27 ++- .../common/logging/jdk/JDKESLoggerTests.java | 131 ------------- .../logging/{log4j => }/config/logging.yml | 0 .../{log4j => }/config/test2/logging.yml | 0 .../config/test2/test3/logging.yml | 0 distribution/build.gradle | 2 +- plugins/lang-python/build.gradle | 2 + plugins/repository-azure/build.gradle | 5 + plugins/repository-hdfs/build.gradle | 4 + .../licenses/slf4j-api-1.6.2.jar.sha1 | 1 + .../licenses/slf4j-api-LICENSE.txt | 21 ++ .../licenses/slf4j-api-NOTICE.txt | 0 38 files changed, 257 insertions(+), 1167 deletions(-) rename core/src/main/java/org/elasticsearch/common/logging/{log4j => }/ConsoleAppender.java (98%) rename core/src/main/java/org/elasticsearch/common/logging/{log4j => }/LogConfigurator.java (93%) rename core/src/main/java/org/elasticsearch/common/logging/{support => }/LoggerMessageFormat.java (94%) rename core/src/main/java/org/elasticsearch/common/logging/{log4j => }/TerminalAppender.java (96%) delete mode 100644 core/src/main/java/org/elasticsearch/common/logging/jdk/ESLogRecord.java delete mode 100644 core/src/main/java/org/elasticsearch/common/logging/jdk/JdkESLogger.java delete mode 100644 core/src/main/java/org/elasticsearch/common/logging/jdk/JdkESLoggerFactory.java delete mode 100644 core/src/main/java/org/elasticsearch/common/logging/log4j/Log4jESLogger.java delete mode 100644 core/src/main/java/org/elasticsearch/common/logging/log4j/Log4jESLoggerFactory.java delete mode 100644 core/src/main/java/org/elasticsearch/common/logging/slf4j/Slf4jESLogger.java delete mode 100644 core/src/main/java/org/elasticsearch/common/logging/slf4j/Slf4jESLoggerFactory.java delete mode 100644 core/src/main/java/org/elasticsearch/common/logging/support/AbstractESLogger.java rename core/src/test/java/org/elasticsearch/common/logging/{log4j/Log4jESLoggerTests.java => ESLoggerTests.java} (81%) rename core/src/test/java/org/elasticsearch/common/logging/{log4j => }/LoggingConfigurationTests.java (90%) delete mode 100644 core/src/test/java/org/elasticsearch/common/logging/jdk/JDKESLoggerTests.java rename core/src/test/resources/org/elasticsearch/common/logging/{log4j => }/config/logging.yml (100%) rename core/src/test/resources/org/elasticsearch/common/logging/{log4j => }/config/test2/logging.yml (100%) rename core/src/test/resources/org/elasticsearch/common/logging/{log4j => }/config/test2/test3/logging.yml (100%) create mode 100644 plugins/repository-hdfs/licenses/slf4j-api-1.6.2.jar.sha1 create mode 100644 plugins/repository-hdfs/licenses/slf4j-api-LICENSE.txt create mode 100644 plugins/repository-hdfs/licenses/slf4j-api-NOTICE.txt diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/plugin/PluginBuildPlugin.groovy b/buildSrc/src/main/groovy/org/elasticsearch/gradle/plugin/PluginBuildPlugin.groovy index 435008132c7..9b070f71c20 100644 --- a/buildSrc/src/main/groovy/org/elasticsearch/gradle/plugin/PluginBuildPlugin.groovy +++ b/buildSrc/src/main/groovy/org/elasticsearch/gradle/plugin/PluginBuildPlugin.groovy @@ -67,7 +67,6 @@ public class PluginBuildPlugin extends BuildPlugin { provided "com.vividsolutions:jts:${project.versions.jts}" provided "log4j:log4j:${project.versions.log4j}" provided "log4j:apache-log4j-extras:${project.versions.log4j}" - provided "org.slf4j:slf4j-api:${project.versions.slf4j}" provided "net.java.dev.jna:jna:${project.versions.jna}" } } @@ -101,11 +100,6 @@ public class PluginBuildPlugin extends BuildPlugin { from pluginMetadata // metadata (eg custom security policy) from project.jar // this plugin's jar from project.configurations.runtime - project.configurations.provided // the dep jars - // hack just for slf4j, in case it is "upgrade" from provided to compile, - // since it is not actually provided in distributions - from project.configurations.runtime.fileCollection { Dependency dep -> - return dep.name == 'slf4j-api' && project.configurations.compile.dependencies.contains(dep) - } // extra files for the plugin to go into the zip from('src/main/packaging') // TODO: move all config/bin/_size/etc into packaging from('src/main') { diff --git a/buildSrc/src/main/resources/checkstyle_suppressions.xml b/buildSrc/src/main/resources/checkstyle_suppressions.xml index bad7392d895..d7ea1545fc9 100644 --- a/buildSrc/src/main/resources/checkstyle_suppressions.xml +++ b/buildSrc/src/main/resources/checkstyle_suppressions.xml @@ -374,9 +374,6 @@ - - - diff --git a/core/build.gradle b/core/build.gradle index e1511a9cdd1..ac3f421211d 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -77,7 +77,6 @@ dependencies { // logging compile "log4j:log4j:${versions.log4j}", optional compile "log4j:apache-log4j-extras:${versions.log4j}", optional - compile "org.slf4j:slf4j-api:${versions.slf4j}", optional compile "net.java.dev.jna:jna:${versions.jna}", optional @@ -224,8 +223,9 @@ thirdPartyAudit.excludes = [ 'org.osgi.util.tracker.ServiceTracker', 'org.osgi.util.tracker.ServiceTrackerCustomizer', - 'org.slf4j.impl.StaticMDCBinder', - 'org.slf4j.impl.StaticMarkerBinder', + // from org.netty.util.internal.logging.InternalLoggerFactory (netty) - it's optional + 'org.slf4j.Logger', + 'org.slf4j.LoggerFactory', ] // dependency license are currently checked in distribution diff --git a/core/src/main/java/org/elasticsearch/ElasticsearchException.java b/core/src/main/java/org/elasticsearch/ElasticsearchException.java index dbfebd9aa8b..d069bddfdfe 100644 --- a/core/src/main/java/org/elasticsearch/ElasticsearchException.java +++ b/core/src/main/java/org/elasticsearch/ElasticsearchException.java @@ -23,7 +23,7 @@ import org.elasticsearch.cluster.action.shard.ShardStateAction; import org.elasticsearch.common.Strings; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; -import org.elasticsearch.common.logging.support.LoggerMessageFormat; +import org.elasticsearch.common.logging.LoggerMessageFormat; import org.elasticsearch.common.xcontent.ToXContent; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.index.Index; diff --git a/core/src/main/java/org/elasticsearch/action/support/single/instance/TransportInstanceSingleOperationAction.java b/core/src/main/java/org/elasticsearch/action/support/single/instance/TransportInstanceSingleOperationAction.java index 97cc6b044a9..53d797fbf8f 100644 --- a/core/src/main/java/org/elasticsearch/action/support/single/instance/TransportInstanceSingleOperationAction.java +++ b/core/src/main/java/org/elasticsearch/action/support/single/instance/TransportInstanceSingleOperationAction.java @@ -35,7 +35,7 @@ import org.elasticsearch.cluster.node.DiscoveryNodes; import org.elasticsearch.cluster.routing.ShardIterator; import org.elasticsearch.cluster.routing.ShardRouting; import org.elasticsearch.common.Nullable; -import org.elasticsearch.common.logging.support.LoggerMessageFormat; +import org.elasticsearch.common.logging.LoggerMessageFormat; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.unit.TimeValue; import org.elasticsearch.index.shard.ShardId; diff --git a/core/src/main/java/org/elasticsearch/action/support/single/shard/TransportSingleShardAction.java b/core/src/main/java/org/elasticsearch/action/support/single/shard/TransportSingleShardAction.java index 1a77a411a94..2d13b7f99ac 100644 --- a/core/src/main/java/org/elasticsearch/action/support/single/shard/TransportSingleShardAction.java +++ b/core/src/main/java/org/elasticsearch/action/support/single/shard/TransportSingleShardAction.java @@ -35,7 +35,7 @@ import org.elasticsearch.cluster.node.DiscoveryNodes; import org.elasticsearch.cluster.routing.ShardRouting; import org.elasticsearch.cluster.routing.ShardsIterator; import org.elasticsearch.common.Nullable; -import org.elasticsearch.common.logging.support.LoggerMessageFormat; +import org.elasticsearch.common.logging.LoggerMessageFormat; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.index.shard.ShardId; import org.elasticsearch.threadpool.ThreadPool; diff --git a/core/src/main/java/org/elasticsearch/bootstrap/Bootstrap.java b/core/src/main/java/org/elasticsearch/bootstrap/Bootstrap.java index 0d95edadb17..ec4e5ba2421 100644 --- a/core/src/main/java/org/elasticsearch/bootstrap/Bootstrap.java +++ b/core/src/main/java/org/elasticsearch/bootstrap/Bootstrap.java @@ -29,10 +29,9 @@ import org.elasticsearch.common.SuppressForbidden; import org.elasticsearch.common.cli.CliTool; import org.elasticsearch.common.cli.Terminal; import org.elasticsearch.common.inject.CreationException; -import org.elasticsearch.common.lease.Releasables; import org.elasticsearch.common.logging.ESLogger; +import org.elasticsearch.common.logging.LogConfigurator; import org.elasticsearch.common.logging.Loggers; -import org.elasticsearch.common.logging.log4j.LogConfigurator; import org.elasticsearch.common.network.NetworkService; import org.elasticsearch.common.settings.Setting; import org.elasticsearch.common.settings.Settings; diff --git a/core/src/main/java/org/elasticsearch/common/logging/log4j/ConsoleAppender.java b/core/src/main/java/org/elasticsearch/common/logging/ConsoleAppender.java similarity index 98% rename from core/src/main/java/org/elasticsearch/common/logging/log4j/ConsoleAppender.java rename to core/src/main/java/org/elasticsearch/common/logging/ConsoleAppender.java index 30c3aa91f5d..7c33389974f 100644 --- a/core/src/main/java/org/elasticsearch/common/logging/log4j/ConsoleAppender.java +++ b/core/src/main/java/org/elasticsearch/common/logging/ConsoleAppender.java @@ -17,13 +17,12 @@ * under the License. */ -package org.elasticsearch.common.logging.log4j; +package org.elasticsearch.common.logging; import org.apache.log4j.Layout; import org.apache.log4j.WriterAppender; import org.apache.log4j.helpers.LogLog; import org.elasticsearch.common.SuppressForbidden; -import org.elasticsearch.common.logging.Loggers; import java.io.IOException; import java.io.OutputStream; diff --git a/core/src/main/java/org/elasticsearch/common/logging/ESLogger.java b/core/src/main/java/org/elasticsearch/common/logging/ESLogger.java index 06cce146b32..597619e61b4 100644 --- a/core/src/main/java/org/elasticsearch/common/logging/ESLogger.java +++ b/core/src/main/java/org/elasticsearch/common/logging/ESLogger.java @@ -19,104 +19,188 @@ package org.elasticsearch.common.logging; +import org.apache.log4j.Level; +import org.apache.log4j.Logger; + +import static org.elasticsearch.common.logging.LoggerMessageFormat.format; + /** - * Contract for all elasticsearch loggers. + * Elasticsearch's logger wrapper. */ -public interface ESLogger { +public class ESLogger { + private static final String FQCN = ESLogger.class.getName(); - String getPrefix(); + private final String prefix; + private final Logger logger; - String getName(); + public ESLogger(String prefix, Logger logger) { + this.prefix = prefix; + this.logger = logger; + } /** - * Allows to set the logger level - * If the new level is null, the logger will inherit its level - * from its nearest ancestor with a specific (non-null) level value. - * @param level the new level + * The prefix of the log. */ - void setLevel(String level); + public String getPrefix() { + return this.prefix; + } /** - * Returns the current logger level - * If the level is null, it means that the logger inherits its level - * from its nearest ancestor with a specific (non-null) level value. - * @return the logger level + * Fetch the underlying logger so we can look at it. Only exists for testing. */ - String getLevel(); + Logger getLogger() { + return logger; + } /** - * Returns {@code true} if a TRACE level message is logged. + * Set the level of the logger. If the new level is null, the logger will inherit it's level from its nearest ancestor with a non-null + * level. */ - boolean isTraceEnabled(); + public void setLevel(String level) { + if (level == null) { + logger.setLevel(null); + } else if ("error".equalsIgnoreCase(level)) { + logger.setLevel(Level.ERROR); + } else if ("warn".equalsIgnoreCase(level)) { + logger.setLevel(Level.WARN); + } else if ("info".equalsIgnoreCase(level)) { + logger.setLevel(Level.INFO); + } else if ("debug".equalsIgnoreCase(level)) { + logger.setLevel(Level.DEBUG); + } else if ("trace".equalsIgnoreCase(level)) { + logger.setLevel(Level.TRACE); + } + } /** - * Returns {@code true} if a DEBUG level message is logged. + * The level of this logger. If null then the logger is inheriting it's level from its nearest ancestor with a non-null level. */ - boolean isDebugEnabled(); + public String getLevel() { + if (logger.getLevel() == null) { + return null; + } + return logger.getLevel().toString(); + } /** - * Returns {@code true} if an INFO level message is logged. + * The name of this logger. */ - boolean isInfoEnabled(); + public String getName() { + return logger.getName(); + } /** - * Returns {@code true} if a WARN level message is logged. + * Returns {@code true} if a TRACE level message should be logged. */ - boolean isWarnEnabled(); + public boolean isTraceEnabled() { + return logger.isTraceEnabled(); + } /** - * Returns {@code true} if an ERROR level message is logged. + * Returns {@code true} if a DEBUG level message should be logged. */ - boolean isErrorEnabled(); + public boolean isDebugEnabled() { + return logger.isDebugEnabled(); + } + + /** + * Returns {@code true} if an INFO level message should be logged. + */ + public boolean isInfoEnabled() { + return logger.isInfoEnabled(); + } + + /** + * Returns {@code true} if a WARN level message should be logged. + */ + public boolean isWarnEnabled() { + return logger.isEnabledFor(Level.WARN); + } + + /** + * Returns {@code true} if an ERROR level message should be logged. + */ + public boolean isErrorEnabled() { + return logger.isEnabledFor(Level.ERROR); + } + + /** + * Logs a TRACE level message. + */ + public void trace(String msg, Object... params) { + trace(msg, null, params); + } + + /** + * Logs a TRACE level message with an exception. + */ + public void trace(String msg, Throwable cause, Object... params) { + if (isTraceEnabled()) { + logger.log(FQCN, Level.TRACE, format(prefix, msg, params), cause); + } + } /** * Logs a DEBUG level message. */ - void trace(String msg, Object... params); + public void debug(String msg, Object... params) { + debug(msg, null, params); + } /** - * Logs a DEBUG level message. + * Logs a DEBUG level message with an exception. */ - void trace(String msg, Throwable cause, Object... params); + public void debug(String msg, Throwable cause, Object... params) { + if (isDebugEnabled()) { + logger.log(FQCN, Level.DEBUG, format(prefix, msg, params), cause); + } + } /** - * Logs a DEBUG level message. + * Logs a INFO level message. */ - void debug(String msg, Object... params); + public void info(String msg, Object... params) { + info(msg, null, params); + } /** - * Logs a DEBUG level message. + * Logs a INFO level message with an exception. */ - void debug(String msg, Throwable cause, Object... params); - - /** - * Logs an INFO level message. - */ - void info(String msg, Object... params); - - /** - * Logs an INFO level message. - */ - void info(String msg, Throwable cause, Object... params); + public void info(String msg, Throwable cause, Object... params) { + if (isInfoEnabled()) { + logger.log(FQCN, Level.INFO, format(prefix, msg, params), cause); + } + } /** * Logs a WARN level message. */ - void warn(String msg, Object... params); + public void warn(String msg, Object... params) { + warn(msg, null, params); + } /** - * Logs a WARN level message. + * Logs a WARN level message with an exception. */ - void warn(String msg, Throwable cause, Object... params); + public void warn(String msg, Throwable cause, Object... params) { + if (isWarnEnabled()) { + logger.log(FQCN, Level.WARN, format(prefix, msg, params), cause); + } + } /** - * Logs an ERROR level message. + * Logs a ERROR level message. */ - void error(String msg, Object... params); + public void error(String msg, Object... params) { + error(msg, null, params); + } /** - * Logs an ERROR level message. + * Logs a ERROR level message with an exception. */ - void error(String msg, Throwable cause, Object... params); - + public void error(String msg, Throwable cause, Object... params) { + if (isErrorEnabled()) { + logger.log(FQCN, Level.ERROR, format(prefix, msg, params), cause); + } + } } diff --git a/core/src/main/java/org/elasticsearch/common/logging/ESLoggerFactory.java b/core/src/main/java/org/elasticsearch/common/logging/ESLoggerFactory.java index 4fdde3db895..1cd3405bde6 100644 --- a/core/src/main/java/org/elasticsearch/common/logging/ESLoggerFactory.java +++ b/core/src/main/java/org/elasticsearch/common/logging/ESLoggerFactory.java @@ -19,62 +19,29 @@ package org.elasticsearch.common.logging; -import org.elasticsearch.common.logging.jdk.JdkESLoggerFactory; -import org.elasticsearch.common.logging.log4j.Log4jESLoggerFactory; -import org.elasticsearch.common.logging.slf4j.Slf4jESLoggerFactory; -import org.elasticsearch.common.settings.AbstractScopedSettings; +import org.apache.log4j.Logger; import org.elasticsearch.common.settings.Setting; -import org.elasticsearch.common.settings.Settings; import java.util.Locale; -import java.util.Map; -import java.util.function.Consumer; -import java.util.regex.Pattern; /** * Factory to get {@link ESLogger}s */ public abstract class ESLoggerFactory { - public static final Setting LOG_DEFAULT_LEVEL_SETTING = new Setting<>("logger.level", LogLevel.INFO.name(), LogLevel::parse, false, Setting.Scope.CLUSTER); - public static final Setting LOG_LEVEL_SETTING = Setting.dynamicKeySetting("logger.", LogLevel.INFO.name(), LogLevel::parse, true, Setting.Scope.CLUSTER); - - private static volatile ESLoggerFactory defaultFactory = new JdkESLoggerFactory(); - - static { - try { - Class loggerClazz = Class.forName("org.apache.log4j.Logger"); - // below will throw a NoSuchMethod failure with using slf4j log4j bridge - loggerClazz.getMethod("setLevel", Class.forName("org.apache.log4j.Level")); - defaultFactory = new Log4jESLoggerFactory(); - } catch (Throwable e) { - // no log4j - try { - Class.forName("org.slf4j.Logger"); - defaultFactory = new Slf4jESLoggerFactory(); - } catch (Throwable e1) { - // no slf4j - } - } - } - - /** - * Changes the default factory. - */ - public static void setDefaultFactory(ESLoggerFactory defaultFactory) { - if (defaultFactory == null) { - throw new NullPointerException("defaultFactory"); - } - ESLoggerFactory.defaultFactory = defaultFactory; - } - + public static final Setting LOG_DEFAULT_LEVEL_SETTING = + new Setting<>("logger.level", LogLevel.INFO.name(), LogLevel::parse, false, Setting.Scope.CLUSTER); + public static final Setting LOG_LEVEL_SETTING = + Setting.dynamicKeySetting("logger.", LogLevel.INFO.name(), LogLevel::parse, true, Setting.Scope.CLUSTER); public static ESLogger getLogger(String prefix, String name) { - return defaultFactory.newInstance(prefix == null ? null : prefix.intern(), name.intern()); + prefix = prefix == null ? null : prefix.intern(); + name = name.intern(); + return new ESLogger(prefix, Logger.getLogger(name)); } public static ESLogger getLogger(String name) { - return defaultFactory.newInstance(name.intern()); + return getLogger(null, name); } public static DeprecationLogger getDeprecationLogger(String name) { @@ -86,17 +53,13 @@ public abstract class ESLoggerFactory { } public static ESLogger getRootLogger() { - return defaultFactory.rootLogger(); + return new ESLogger(null, Logger.getRootLogger()); } - public ESLogger newInstance(String name) { - return newInstance(null, name); + private ESLoggerFactory() { + // Utility class can't be built. } - protected abstract ESLogger rootLogger(); - - protected abstract ESLogger newInstance(String prefix, String name); - public enum LogLevel { WARN, TRACE, INFO, DEBUG, ERROR; public static LogLevel parse(String level) { diff --git a/core/src/main/java/org/elasticsearch/common/logging/log4j/LogConfigurator.java b/core/src/main/java/org/elasticsearch/common/logging/LogConfigurator.java similarity index 93% rename from core/src/main/java/org/elasticsearch/common/logging/log4j/LogConfigurator.java rename to core/src/main/java/org/elasticsearch/common/logging/LogConfigurator.java index e0d5f15630a..28feca13c02 100644 --- a/core/src/main/java/org/elasticsearch/common/logging/log4j/LogConfigurator.java +++ b/core/src/main/java/org/elasticsearch/common/logging/LogConfigurator.java @@ -17,7 +17,7 @@ * under the License. */ -package org.elasticsearch.common.logging.log4j; +package org.elasticsearch.common.logging; import org.apache.log4j.PropertyConfigurator; import org.elasticsearch.ElasticsearchException; @@ -39,13 +39,14 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties; +import java.util.Set; import static java.util.Collections.unmodifiableMap; import static org.elasticsearch.common.Strings.cleanPath; import static org.elasticsearch.common.settings.Settings.settingsBuilder; /** - * + * Configures log4j with a special set of replacements. */ public class LogConfigurator { @@ -54,10 +55,12 @@ public class LogConfigurator { private static final Map REPLACEMENTS; static { Map replacements = new HashMap<>(); - replacements.put("console", "org.elasticsearch.common.logging.log4j.ConsoleAppender"); + // Appenders replacements.put("async", "org.apache.log4j.AsyncAppender"); + replacements.put("console", ConsoleAppender.class.getName()); replacements.put("dailyRollingFile", "org.apache.log4j.DailyRollingFileAppender"); replacements.put("externallyRolledFile", "org.apache.log4j.ExternallyRolledFileAppender"); + replacements.put("extrasRollingFile", "org.apache.log4j.rolling.RollingFileAppender"); replacements.put("file", "org.apache.log4j.FileAppender"); replacements.put("jdbc", "org.apache.log4j.jdbc.JDBCAppender"); replacements.put("jms", "org.apache.log4j.net.JMSAppender"); @@ -65,17 +68,18 @@ public class LogConfigurator { replacements.put("ntevent", "org.apache.log4j.nt.NTEventLogAppender"); replacements.put("null", "org.apache.log4j.NullAppender"); replacements.put("rollingFile", "org.apache.log4j.RollingFileAppender"); - replacements.put("extrasRollingFile", "org.apache.log4j.rolling.RollingFileAppender"); replacements.put("smtp", "org.apache.log4j.net.SMTPAppender"); replacements.put("socket", "org.apache.log4j.net.SocketAppender"); replacements.put("socketHub", "org.apache.log4j.net.SocketHubAppender"); replacements.put("syslog", "org.apache.log4j.net.SyslogAppender"); replacements.put("telnet", "org.apache.log4j.net.TelnetAppender"); - replacements.put("terminal", "org.elasticsearch.common.logging.log4j.TerminalAppender"); - // policies + replacements.put("terminal", TerminalAppender.class.getName()); + + // Policies replacements.put("timeBased", "org.apache.log4j.rolling.TimeBasedRollingPolicy"); replacements.put("sizeBased", "org.apache.log4j.rolling.SizeBasedTriggeringPolicy"); - // layouts + + // Layouts replacements.put("simple", "org.apache.log4j.SimpleLayout"); replacements.put("html", "org.apache.log4j.HTMLLayout"); replacements.put("pattern", "org.apache.log4j.PatternLayout"); @@ -141,7 +145,8 @@ public class LogConfigurator { static void resolveConfig(Environment env, final Settings.Builder settingsBuilder) { try { - Files.walkFileTree(env.configFile(), EnumSet.of(FileVisitOption.FOLLOW_LINKS), Integer.MAX_VALUE, new SimpleFileVisitor() { + Set options = EnumSet.of(FileVisitOption.FOLLOW_LINKS); + Files.walkFileTree(env.configFile(), options, Integer.MAX_VALUE, new SimpleFileVisitor() { @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { String fileName = file.getFileName().toString(); diff --git a/core/src/main/java/org/elasticsearch/common/logging/support/LoggerMessageFormat.java b/core/src/main/java/org/elasticsearch/common/logging/LoggerMessageFormat.java similarity index 94% rename from core/src/main/java/org/elasticsearch/common/logging/support/LoggerMessageFormat.java rename to core/src/main/java/org/elasticsearch/common/logging/LoggerMessageFormat.java index 8ec9f61df00..f1e135d645c 100644 --- a/core/src/main/java/org/elasticsearch/common/logging/support/LoggerMessageFormat.java +++ b/core/src/main/java/org/elasticsearch/common/logging/LoggerMessageFormat.java @@ -17,13 +17,13 @@ * under the License. */ -package org.elasticsearch.common.logging.support; +package org.elasticsearch.common.logging; -import java.util.HashMap; -import java.util.Map; +import java.util.HashSet; +import java.util.Set; /** - * + * Format string for Elasticsearch log messages. */ public class LoggerMessageFormat { @@ -79,13 +79,13 @@ public class LoggerMessageFormat { // itself escaped: "abc x:\\{}" // we have to consume one backward slash sbuf.append(messagePattern.substring(i, j - 1)); - deeplyAppendParameter(sbuf, argArray[L], new HashMap()); + deeplyAppendParameter(sbuf, argArray[L], new HashSet()); i = j + 2; } } else { // normal case sbuf.append(messagePattern.substring(i, j)); - deeplyAppendParameter(sbuf, argArray[L], new HashMap()); + deeplyAppendParameter(sbuf, argArray[L], new HashSet()); i = j + 2; } } @@ -117,7 +117,7 @@ public class LoggerMessageFormat { } } - private static void deeplyAppendParameter(StringBuilder sbuf, Object o, Map seenMap) { + private static void deeplyAppendParameter(StringBuilder sbuf, Object o, Set seen) { if (o == null) { sbuf.append("null"); return; @@ -144,7 +144,7 @@ public class LoggerMessageFormat { } else if (o instanceof double[]) { doubleArrayAppend(sbuf, (double[]) o); } else { - objectArrayAppend(sbuf, (Object[]) o, seenMap); + objectArrayAppend(sbuf, (Object[]) o, seen); } } } @@ -159,18 +159,18 @@ public class LoggerMessageFormat { } - private static void objectArrayAppend(StringBuilder sbuf, Object[] a, Map seenMap) { + private static void objectArrayAppend(StringBuilder sbuf, Object[] a, Set seen) { sbuf.append('['); - if (!seenMap.containsKey(a)) { - seenMap.put(a, null); + if (!seen.contains(a)) { + seen.add(a); final int len = a.length; for (int i = 0; i < len; i++) { - deeplyAppendParameter(sbuf, a[i], seenMap); + deeplyAppendParameter(sbuf, a[i], seen); if (i != len - 1) sbuf.append(", "); } // allow repeats in siblings - seenMap.remove(a); + seen.remove(a); } else { sbuf.append("..."); } diff --git a/core/src/main/java/org/elasticsearch/common/logging/Loggers.java b/core/src/main/java/org/elasticsearch/common/logging/Loggers.java index 6aecca2846c..a195ab450b5 100644 --- a/core/src/main/java/org/elasticsearch/common/logging/Loggers.java +++ b/core/src/main/java/org/elasticsearch/common/logging/Loggers.java @@ -35,8 +35,6 @@ import static org.elasticsearch.common.util.CollectionUtils.asArrayList; /** * A set of utilities around Logging. - * - * */ public class Loggers { @@ -58,20 +56,24 @@ public class Loggers { return consoleLoggingEnabled; } - public static ESLogger getLogger(Class clazz, Settings settings, ShardId shardId, String... prefixes) { + public static ESLogger getLogger(Class clazz, Settings settings, ShardId shardId, String... prefixes) { return getLogger(clazz, settings, shardId.getIndex(), asArrayList(Integer.toString(shardId.id()), prefixes).toArray(new String[0])); } - /** Just like {@link #getLogger(Class, org.elasticsearch.common.settings.Settings,ShardId,String...)} but String loggerName instead of Class. */ + /** + * Just like {@link #getLogger(Class, org.elasticsearch.common.settings.Settings,ShardId,String...)} but String loggerName instead of + * Class. + */ public static ESLogger getLogger(String loggerName, Settings settings, ShardId shardId, String... prefixes) { - return getLogger(loggerName, settings, asArrayList(shardId.getIndexName(), Integer.toString(shardId.id()), prefixes).toArray(new String[0])); + return getLogger(loggerName, settings, + asArrayList(shardId.getIndexName(), Integer.toString(shardId.id()), prefixes).toArray(new String[0])); } - public static ESLogger getLogger(Class clazz, Settings settings, Index index, String... prefixes) { + public static ESLogger getLogger(Class clazz, Settings settings, Index index, String... prefixes) { return getLogger(clazz, settings, asArrayList(SPACE, index.getName(), prefixes).toArray(new String[0])); } - public static ESLogger getLogger(Class clazz, Settings settings, String... prefixes) { + public static ESLogger getLogger(Class clazz, Settings settings, String... prefixes) { return getLogger(buildClassLoggerName(clazz), settings, prefixes); } @@ -117,11 +119,11 @@ public class Loggers { return ESLoggerFactory.getLogger(getLoggerName(s)); } - public static ESLogger getLogger(Class clazz) { + public static ESLogger getLogger(Class clazz) { return ESLoggerFactory.getLogger(getLoggerName(buildClassLoggerName(clazz))); } - public static ESLogger getLogger(Class clazz, String... prefixes) { + public static ESLogger getLogger(Class clazz, String... prefixes) { return getLogger(buildClassLoggerName(clazz), prefixes); } @@ -146,7 +148,7 @@ public class Loggers { return ESLoggerFactory.getLogger(prefix, getLoggerName(name)); } - private static String buildClassLoggerName(Class clazz) { + private static String buildClassLoggerName(Class clazz) { String name = clazz.getName(); if (name.startsWith("org.elasticsearch.")) { name = Classes.getPackageName(clazz); diff --git a/core/src/main/java/org/elasticsearch/common/logging/log4j/TerminalAppender.java b/core/src/main/java/org/elasticsearch/common/logging/TerminalAppender.java similarity index 96% rename from core/src/main/java/org/elasticsearch/common/logging/log4j/TerminalAppender.java rename to core/src/main/java/org/elasticsearch/common/logging/TerminalAppender.java index 6e626060542..7031a62a999 100644 --- a/core/src/main/java/org/elasticsearch/common/logging/log4j/TerminalAppender.java +++ b/core/src/main/java/org/elasticsearch/common/logging/TerminalAppender.java @@ -18,7 +18,7 @@ */ -package org.elasticsearch.common.logging.log4j; +package org.elasticsearch.common.logging; import org.apache.log4j.AppenderSkeleton; import org.apache.log4j.spi.LoggingEvent; diff --git a/core/src/main/java/org/elasticsearch/common/logging/jdk/ESLogRecord.java b/core/src/main/java/org/elasticsearch/common/logging/jdk/ESLogRecord.java deleted file mode 100644 index c462262e9e9..00000000000 --- a/core/src/main/java/org/elasticsearch/common/logging/jdk/ESLogRecord.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.common.logging.jdk; - -import org.elasticsearch.common.logging.support.AbstractESLogger; - -import java.util.logging.Level; -import java.util.logging.LogRecord; - -/** - * A {@link LogRecord} which is used in conjunction with {@link JdkESLogger} - * with the ability to provide the class name, method name and line number - * information of the code calling the logger - */ -public class ESLogRecord extends LogRecord { - private static final String FQCN = AbstractESLogger.class.getName(); - private String sourceClassName; - private String sourceMethodName; - private transient boolean needToInferCaller; - - public ESLogRecord(Level level, String msg) { - super(level, msg); - needToInferCaller = true; - } - - @Override - public String getSourceClassName() { - if (needToInferCaller) { - inferCaller(); - } - return sourceClassName; - } - - @Override - public void setSourceClassName(String sourceClassName) { - this.sourceClassName = sourceClassName; - needToInferCaller = false; - } - - @Override - public String getSourceMethodName() { - if (needToInferCaller) { - inferCaller(); - } - return sourceMethodName; - } - - @Override - public void setSourceMethodName(String sourceMethodName) { - this.sourceMethodName = sourceMethodName; - needToInferCaller = false; - } - - /** - * Determines the source information for the caller of the logger (class - * name, method name, and line number) - */ - private void inferCaller() { - needToInferCaller = false; - Throwable throwable = new Throwable(); - - boolean lookingForLogger = true; - for (final StackTraceElement frame : throwable.getStackTrace()) { - String cname = frame.getClassName(); - boolean isLoggerImpl = isLoggerImplFrame(cname); - if (lookingForLogger) { - // Skip all frames until we have found the first logger frame. - if (isLoggerImpl) { - lookingForLogger = false; - } - } else { - if (!isLoggerImpl) { - // skip reflection call - if (!cname.startsWith("java.lang.reflect.") && !cname.startsWith("sun.reflect.")) { - // We've found the relevant frame. - setSourceClassName(cname); - setSourceMethodName(frame.getMethodName()); - return; - } - } - } - } - // We haven't found a suitable frame, so just punt. This is - // OK as we are only committed to making a "best effort" here. - } - - private boolean isLoggerImplFrame(String cname) { - // the log record could be created for a platform logger - return cname.equals(FQCN); - } -} diff --git a/core/src/main/java/org/elasticsearch/common/logging/jdk/JdkESLogger.java b/core/src/main/java/org/elasticsearch/common/logging/jdk/JdkESLogger.java deleted file mode 100644 index 2db16983e1a..00000000000 --- a/core/src/main/java/org/elasticsearch/common/logging/jdk/JdkESLogger.java +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.common.logging.jdk; - -import org.elasticsearch.common.logging.support.AbstractESLogger; - -import java.util.logging.Level; -import java.util.logging.LogRecord; -import java.util.logging.Logger; - -/** - * - */ -public class JdkESLogger extends AbstractESLogger { - - private final Logger logger; - - public JdkESLogger(String prefix, Logger logger) { - super(prefix); - this.logger = logger; - } - - @Override - public void setLevel(String level) { - if (level == null) { - logger.setLevel(null); - } else if ("error".equalsIgnoreCase(level)) { - logger.setLevel(Level.SEVERE); - } else if ("warn".equalsIgnoreCase(level)) { - logger.setLevel(Level.WARNING); - } else if ("info".equalsIgnoreCase(level)) { - logger.setLevel(Level.INFO); - } else if ("debug".equalsIgnoreCase(level)) { - logger.setLevel(Level.FINE); - } else if ("trace".equalsIgnoreCase(level)) { - logger.setLevel(Level.FINEST); - } - } - - @Override - public String getLevel() { - if (logger.getLevel() == null) { - return null; - } - return logger.getLevel().toString(); - } - - @Override - public String getName() { - return logger.getName(); - } - - @Override - public boolean isTraceEnabled() { - return logger.isLoggable(Level.FINEST); - } - - @Override - public boolean isDebugEnabled() { - return logger.isLoggable(Level.FINE); - } - - @Override - public boolean isInfoEnabled() { - return logger.isLoggable(Level.INFO); - } - - @Override - public boolean isWarnEnabled() { - return logger.isLoggable(Level.WARNING); - } - - @Override - public boolean isErrorEnabled() { - return logger.isLoggable(Level.SEVERE); - } - - @Override - protected void internalTrace(String msg) { - LogRecord record = new ESLogRecord(Level.FINEST, msg); - logger.log(record); - } - - @Override - protected void internalTrace(String msg, Throwable cause) { - LogRecord record = new ESLogRecord(Level.FINEST, msg); - record.setThrown(cause); - logger.log(record); - } - - @Override - protected void internalDebug(String msg) { - LogRecord record = new ESLogRecord(Level.FINE, msg); - logger.log(record); - } - - @Override - protected void internalDebug(String msg, Throwable cause) { - LogRecord record = new ESLogRecord(Level.FINE, msg); - record.setThrown(cause); - logger.log(record); - } - - @Override - protected void internalInfo(String msg) { - LogRecord record = new ESLogRecord(Level.INFO, msg); - logger.log(record); - } - - @Override - protected void internalInfo(String msg, Throwable cause) { - LogRecord record = new ESLogRecord(Level.INFO, msg); - record.setThrown(cause); - logger.log(record); - } - - @Override - protected void internalWarn(String msg) { - LogRecord record = new ESLogRecord(Level.WARNING, msg); - logger.log(record); - } - - @Override - protected void internalWarn(String msg, Throwable cause) { - LogRecord record = new ESLogRecord(Level.WARNING, msg); - record.setThrown(cause); - logger.log(record); - } - - @Override - protected void internalError(String msg) { - LogRecord record = new ESLogRecord(Level.SEVERE, msg); - logger.log(record); - } - - @Override - protected void internalError(String msg, Throwable cause) { - LogRecord record = new ESLogRecord(Level.SEVERE, msg); - record.setThrown(cause); - logger.log(record); - } - - protected Logger logger() { - return logger; - } -} diff --git a/core/src/main/java/org/elasticsearch/common/logging/jdk/JdkESLoggerFactory.java b/core/src/main/java/org/elasticsearch/common/logging/jdk/JdkESLoggerFactory.java deleted file mode 100644 index 8f3f0f564c0..00000000000 --- a/core/src/main/java/org/elasticsearch/common/logging/jdk/JdkESLoggerFactory.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.common.logging.jdk; - -import org.elasticsearch.common.logging.ESLogger; -import org.elasticsearch.common.logging.ESLoggerFactory; - -/** - * - */ -public class JdkESLoggerFactory extends ESLoggerFactory { - - @Override - protected ESLogger rootLogger() { - return getLogger(""); - } - - @Override - protected ESLogger newInstance(String prefix, String name) { - final java.util.logging.Logger logger = java.util.logging.Logger.getLogger(name); - return new JdkESLogger(prefix, logger); - } -} diff --git a/core/src/main/java/org/elasticsearch/common/logging/log4j/Log4jESLogger.java b/core/src/main/java/org/elasticsearch/common/logging/log4j/Log4jESLogger.java deleted file mode 100644 index e74307f8a4d..00000000000 --- a/core/src/main/java/org/elasticsearch/common/logging/log4j/Log4jESLogger.java +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.common.logging.log4j; - -import org.apache.log4j.Level; -import org.apache.log4j.Logger; -import org.elasticsearch.common.logging.support.AbstractESLogger; - -/** - * - */ -public class Log4jESLogger extends AbstractESLogger { - - private final org.apache.log4j.Logger logger; - private final String FQCN = AbstractESLogger.class.getName(); - - public Log4jESLogger(String prefix, Logger logger) { - super(prefix); - this.logger = logger; - } - - public Logger logger() { - return logger; - } - - @Override - public void setLevel(String level) { - if (level == null) { - logger.setLevel(null); - } else if ("error".equalsIgnoreCase(level)) { - logger.setLevel(Level.ERROR); - } else if ("warn".equalsIgnoreCase(level)) { - logger.setLevel(Level.WARN); - } else if ("info".equalsIgnoreCase(level)) { - logger.setLevel(Level.INFO); - } else if ("debug".equalsIgnoreCase(level)) { - logger.setLevel(Level.DEBUG); - } else if ("trace".equalsIgnoreCase(level)) { - logger.setLevel(Level.TRACE); - } - } - - @Override - public String getLevel() { - if (logger.getLevel() == null) { - return null; - } - return logger.getLevel().toString(); - } - - @Override - public String getName() { - return logger.getName(); - } - - @Override - public boolean isTraceEnabled() { - return logger.isTraceEnabled(); - } - - @Override - public boolean isDebugEnabled() { - return logger.isDebugEnabled(); - } - - @Override - public boolean isInfoEnabled() { - return logger.isInfoEnabled(); - } - - @Override - public boolean isWarnEnabled() { - return logger.isEnabledFor(Level.WARN); - } - - @Override - public boolean isErrorEnabled() { - return logger.isEnabledFor(Level.ERROR); - } - - @Override - protected void internalTrace(String msg) { - logger.log(FQCN, Level.TRACE, msg, null); - } - - @Override - protected void internalTrace(String msg, Throwable cause) { - logger.log(FQCN, Level.TRACE, msg, cause); - } - - @Override - protected void internalDebug(String msg) { - logger.log(FQCN, Level.DEBUG, msg, null); - } - - @Override - protected void internalDebug(String msg, Throwable cause) { - logger.log(FQCN, Level.DEBUG, msg, cause); - } - - @Override - protected void internalInfo(String msg) { - logger.log(FQCN, Level.INFO, msg, null); - } - - @Override - protected void internalInfo(String msg, Throwable cause) { - logger.log(FQCN, Level.INFO, msg, cause); - } - - @Override - protected void internalWarn(String msg) { - logger.log(FQCN, Level.WARN, msg, null); - } - - @Override - protected void internalWarn(String msg, Throwable cause) { - logger.log(FQCN, Level.WARN, msg, cause); - } - - @Override - protected void internalError(String msg) { - logger.log(FQCN, Level.ERROR, msg, null); - } - - @Override - protected void internalError(String msg, Throwable cause) { - logger.log(FQCN, Level.ERROR, msg, cause); - } -} diff --git a/core/src/main/java/org/elasticsearch/common/logging/log4j/Log4jESLoggerFactory.java b/core/src/main/java/org/elasticsearch/common/logging/log4j/Log4jESLoggerFactory.java deleted file mode 100644 index b95e0987c90..00000000000 --- a/core/src/main/java/org/elasticsearch/common/logging/log4j/Log4jESLoggerFactory.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.common.logging.log4j; - -import org.apache.log4j.Logger; -import org.elasticsearch.common.logging.ESLogger; -import org.elasticsearch.common.logging.ESLoggerFactory; - -/** - * - */ -public class Log4jESLoggerFactory extends ESLoggerFactory { - - @Override - protected ESLogger rootLogger() { - return new Log4jESLogger(null, Logger.getRootLogger()); - } - - @Override - protected ESLogger newInstance(String prefix, String name) { - final org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(name); - return new Log4jESLogger(prefix, logger); - } -} diff --git a/core/src/main/java/org/elasticsearch/common/logging/slf4j/Slf4jESLogger.java b/core/src/main/java/org/elasticsearch/common/logging/slf4j/Slf4jESLogger.java deleted file mode 100644 index fc40ec00b01..00000000000 --- a/core/src/main/java/org/elasticsearch/common/logging/slf4j/Slf4jESLogger.java +++ /dev/null @@ -1,179 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.common.logging.slf4j; - -import org.elasticsearch.common.logging.support.AbstractESLogger; -import org.slf4j.Logger; -import org.slf4j.spi.LocationAwareLogger; - -/** - * - */ -public class Slf4jESLogger extends AbstractESLogger { - - private final Logger logger; - private final LocationAwareLogger lALogger; - private final String FQCN = AbstractESLogger.class.getName(); - - public Slf4jESLogger(String prefix, Logger logger) { - super(prefix); - this.logger = logger; - if (logger instanceof LocationAwareLogger) { - lALogger = (LocationAwareLogger) logger; - } else { - lALogger = null; - } - } - - @Override - public void setLevel(String level) { - // can't set it in slf4j... - } - - @Override - public String getLevel() { - // can't get it in slf4j... - return null; - } - - @Override - public String getName() { - return logger.getName(); - } - - @Override - public boolean isTraceEnabled() { - return logger.isTraceEnabled(); - } - - @Override - public boolean isDebugEnabled() { - return logger.isDebugEnabled(); - } - - @Override - public boolean isInfoEnabled() { - return logger.isInfoEnabled(); - } - - @Override - public boolean isWarnEnabled() { - return logger.isWarnEnabled(); - } - - @Override - public boolean isErrorEnabled() { - return logger.isErrorEnabled(); - } - - @Override - protected void internalTrace(String msg) { - if (lALogger != null) { - lALogger.log(null, FQCN, LocationAwareLogger.TRACE_INT, msg, null, null); - } else { - logger.trace(msg); - } - } - - @Override - protected void internalTrace(String msg, Throwable cause) { - if (lALogger != null) { - lALogger.log(null, FQCN, LocationAwareLogger.TRACE_INT, msg, null, cause); - } else { - logger.trace(msg); - } - } - - @Override - protected void internalDebug(String msg) { - if (lALogger != null) { - lALogger.log(null, FQCN, LocationAwareLogger.DEBUG_INT, msg, null, null); - } else { - logger.debug(msg); - } - } - - @Override - protected void internalDebug(String msg, Throwable cause) { - if (lALogger != null) { - lALogger.log(null, FQCN, LocationAwareLogger.DEBUG_INT, msg, null, cause); - } else { - logger.debug(msg); - } - } - - @Override - protected void internalInfo(String msg) { - if (lALogger != null) { - lALogger.log(null, FQCN, LocationAwareLogger.INFO_INT, msg, null, null); - } else { - logger.info(msg); - } - } - - @Override - protected void internalInfo(String msg, Throwable cause) { - if (lALogger != null) { - lALogger.log(null, FQCN, LocationAwareLogger.INFO_INT, msg, null, cause); - } else { - logger.info(msg, cause); - } - } - - @Override - protected void internalWarn(String msg) { - if (lALogger != null) { - lALogger.log(null, FQCN, LocationAwareLogger.WARN_INT, msg, null, null); - } else { - logger.warn(msg); - } - } - - @Override - protected void internalWarn(String msg, Throwable cause) { - if (lALogger != null) { - lALogger.log(null, FQCN, LocationAwareLogger.WARN_INT, msg, null, cause); - } else { - logger.warn(msg); - } - } - - @Override - protected void internalError(String msg) { - if (lALogger != null) { - lALogger.log(null, FQCN, LocationAwareLogger.ERROR_INT, msg, null, null); - } else { - logger.error(msg); - } - } - - @Override - protected void internalError(String msg, Throwable cause) { - if (lALogger != null) { - lALogger.log(null, FQCN, LocationAwareLogger.ERROR_INT, msg, null, cause); - } else { - logger.error(msg); - } - } - - protected Logger logger() { - return logger; - } -} diff --git a/core/src/main/java/org/elasticsearch/common/logging/slf4j/Slf4jESLoggerFactory.java b/core/src/main/java/org/elasticsearch/common/logging/slf4j/Slf4jESLoggerFactory.java deleted file mode 100644 index 1fa13863815..00000000000 --- a/core/src/main/java/org/elasticsearch/common/logging/slf4j/Slf4jESLoggerFactory.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.common.logging.slf4j; - -import org.elasticsearch.common.logging.ESLogger; -import org.elasticsearch.common.logging.ESLoggerFactory; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * - */ -public class Slf4jESLoggerFactory extends ESLoggerFactory { - - @Override - protected ESLogger rootLogger() { - return getLogger(Logger.ROOT_LOGGER_NAME); - } - - @Override - protected ESLogger newInstance(String prefix, String name) { - return new Slf4jESLogger(prefix, LoggerFactory.getLogger(name)); - } -} diff --git a/core/src/main/java/org/elasticsearch/common/logging/support/AbstractESLogger.java b/core/src/main/java/org/elasticsearch/common/logging/support/AbstractESLogger.java deleted file mode 100644 index 441e2418e6c..00000000000 --- a/core/src/main/java/org/elasticsearch/common/logging/support/AbstractESLogger.java +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.common.logging.support; - -import org.elasticsearch.common.logging.ESLogger; - -/** - * - */ -public abstract class AbstractESLogger implements ESLogger { - - private final String prefix; - - protected AbstractESLogger(String prefix) { - this.prefix = prefix; - } - - @Override - public String getPrefix() { - return this.prefix; - } - - @Override - public void trace(String msg, Object... params) { - if (isTraceEnabled()) { - internalTrace(LoggerMessageFormat.format(prefix, msg, params)); - } - } - - protected abstract void internalTrace(String msg); - - @Override - public void trace(String msg, Throwable cause, Object... params) { - if (isTraceEnabled()) { - internalTrace(LoggerMessageFormat.format(prefix, msg, params), cause); - } - } - - protected abstract void internalTrace(String msg, Throwable cause); - - - @Override - public void debug(String msg, Object... params) { - if (isDebugEnabled()) { - internalDebug(LoggerMessageFormat.format(prefix, msg, params)); - } - } - - protected abstract void internalDebug(String msg); - - @Override - public void debug(String msg, Throwable cause, Object... params) { - if (isDebugEnabled()) { - internalDebug(LoggerMessageFormat.format(prefix, msg, params), cause); - } - } - - protected abstract void internalDebug(String msg, Throwable cause); - - - @Override - public void info(String msg, Object... params) { - if (isInfoEnabled()) { - internalInfo(LoggerMessageFormat.format(prefix, msg, params)); - } - } - - protected abstract void internalInfo(String msg); - - @Override - public void info(String msg, Throwable cause, Object... params) { - if (isInfoEnabled()) { - internalInfo(LoggerMessageFormat.format(prefix, msg, params), cause); - } - } - - protected abstract void internalInfo(String msg, Throwable cause); - - - @Override - public void warn(String msg, Object... params) { - if (isWarnEnabled()) { - internalWarn(LoggerMessageFormat.format(prefix, msg, params)); - } - } - - protected abstract void internalWarn(String msg); - - @Override - public void warn(String msg, Throwable cause, Object... params) { - if (isWarnEnabled()) { - internalWarn(LoggerMessageFormat.format(prefix, msg, params), cause); - } - } - - protected abstract void internalWarn(String msg, Throwable cause); - - - @Override - public void error(String msg, Object... params) { - if (isErrorEnabled()) { - internalError(LoggerMessageFormat.format(prefix, msg, params)); - } - } - - protected abstract void internalError(String msg); - - @Override - public void error(String msg, Throwable cause, Object... params) { - if (isErrorEnabled()) { - internalError(LoggerMessageFormat.format(prefix, msg, params), cause); - } - } - - protected abstract void internalError(String msg, Throwable cause); -} diff --git a/core/src/main/java/org/elasticsearch/index/percolator/ExtractQueryTermsService.java b/core/src/main/java/org/elasticsearch/index/percolator/ExtractQueryTermsService.java index 2dfc9407fe6..8ee9d55c312 100644 --- a/core/src/main/java/org/elasticsearch/index/percolator/ExtractQueryTermsService.java +++ b/core/src/main/java/org/elasticsearch/index/percolator/ExtractQueryTermsService.java @@ -36,7 +36,7 @@ import org.apache.lucene.search.Query; import org.apache.lucene.search.TermQuery; import org.apache.lucene.util.BytesRef; import org.apache.lucene.util.BytesRefBuilder; -import org.elasticsearch.common.logging.support.LoggerMessageFormat; +import org.elasticsearch.common.logging.LoggerMessageFormat; import org.elasticsearch.index.mapper.ParseContext; import java.io.IOException; diff --git a/core/src/main/java/org/elasticsearch/plugins/PluginCli.java b/core/src/main/java/org/elasticsearch/plugins/PluginCli.java index 30a36501a61..df402e6359d 100644 --- a/core/src/main/java/org/elasticsearch/plugins/PluginCli.java +++ b/core/src/main/java/org/elasticsearch/plugins/PluginCli.java @@ -24,7 +24,7 @@ import org.elasticsearch.common.SuppressForbidden; import org.elasticsearch.common.cli.CliTool; import org.elasticsearch.common.cli.CliToolConfig; import org.elasticsearch.common.cli.Terminal; -import org.elasticsearch.common.logging.log4j.LogConfigurator; +import org.elasticsearch.common.logging.LogConfigurator; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.env.Environment; import org.elasticsearch.node.internal.InternalSettingsPreparer; diff --git a/core/src/main/java/org/elasticsearch/script/Script.java b/core/src/main/java/org/elasticsearch/script/Script.java index dc0e3835c34..65a117d014f 100644 --- a/core/src/main/java/org/elasticsearch/script/Script.java +++ b/core/src/main/java/org/elasticsearch/script/Script.java @@ -26,7 +26,7 @@ import org.elasticsearch.common.ParseFieldMatcher; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.io.stream.Streamable; -import org.elasticsearch.common.logging.support.LoggerMessageFormat; +import org.elasticsearch.common.logging.LoggerMessageFormat; import org.elasticsearch.common.xcontent.ToXContent; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; diff --git a/core/src/test/java/org/elasticsearch/common/logging/log4j/Log4jESLoggerTests.java b/core/src/test/java/org/elasticsearch/common/logging/ESLoggerTests.java similarity index 81% rename from core/src/test/java/org/elasticsearch/common/logging/log4j/Log4jESLoggerTests.java rename to core/src/test/java/org/elasticsearch/common/logging/ESLoggerTests.java index ed8a5cffbf4..67a6c0555c5 100644 --- a/core/src/test/java/org/elasticsearch/common/logging/log4j/Log4jESLoggerTests.java +++ b/core/src/test/java/org/elasticsearch/common/logging/ESLoggerTests.java @@ -17,15 +17,13 @@ * under the License. */ -package org.elasticsearch.common.logging.log4j; +package org.elasticsearch.common.logging; import org.apache.log4j.AppenderSkeleton; import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.apache.log4j.spi.LocationInfo; import org.apache.log4j.spi.LoggingEvent; -import org.elasticsearch.common.logging.DeprecationLogger; -import org.elasticsearch.common.logging.ESLogger; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.env.Environment; import org.elasticsearch.test.ESTestCase; @@ -38,7 +36,7 @@ import java.util.List; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.notNullValue; -public class Log4jESLoggerTests extends ESTestCase { +public class ESLoggerTests extends ESTestCase { private ESLogger esTestLogger; private TestAppender testAppender; @@ -49,7 +47,7 @@ public class Log4jESLoggerTests extends ESTestCase { @Override public void setUp() throws Exception { super.setUp(); - this.testLevel = Log4jESLoggerFactory.getLogger("test").getLevel(); + this.testLevel = ESLoggerFactory.getLogger("test").getLevel(); LogConfigurator.reset(); Path configDir = getDataPath("config"); // Need to set custom path.conf so we can use a custom logging.yml file for the test @@ -59,18 +57,18 @@ public class Log4jESLoggerTests extends ESTestCase { .build(); LogConfigurator.configure(settings, true); - esTestLogger = Log4jESLoggerFactory.getLogger("test"); - Logger testLogger = ((Log4jESLogger) esTestLogger).logger(); + esTestLogger = ESLoggerFactory.getLogger("test"); + Logger testLogger = esTestLogger.getLogger(); assertThat(testLogger.getLevel(), equalTo(Level.TRACE)); testAppender = new TestAppender(); testLogger.addAppender(testAppender); // deprecation setup, needs to be set to debug to log - deprecationLogger = Log4jESLoggerFactory.getDeprecationLogger("test"); + deprecationLogger = ESLoggerFactory.getDeprecationLogger("test"); deprecationAppender = new TestAppender(); - ESLogger logger = Log4jESLoggerFactory.getLogger("deprecation.test"); + ESLogger logger = ESLoggerFactory.getLogger("deprecation.test"); logger.setLevel("DEBUG"); - (((Log4jESLogger) logger).logger()).addAppender(deprecationAppender); + logger.getLogger().addAppender(deprecationAppender); } @Override @@ -78,9 +76,9 @@ public class Log4jESLoggerTests extends ESTestCase { public void tearDown() throws Exception { super.tearDown(); esTestLogger.setLevel(testLevel); - Logger testLogger = ((Log4jESLogger) esTestLogger).logger(); + Logger testLogger = esTestLogger.getLogger(); testLogger.removeAppender(testAppender); - Logger deprecationLogger = ((Log4jESLogger) Log4jESLoggerFactory.getLogger("deprecation.test")).logger(); + Logger deprecationLogger = ESLoggerFactory.getLogger("deprecation.test").getLogger(); deprecationLogger.removeAppender(deprecationAppender); } @@ -99,7 +97,7 @@ public class Log4jESLoggerTests extends ESTestCase { assertThat(event.getRenderedMessage(), equalTo("This is an error")); LocationInfo locationInfo = event.getLocationInformation(); assertThat(locationInfo, notNullValue()); - assertThat(locationInfo.getClassName(), equalTo(Log4jESLoggerTests.class.getCanonicalName())); + assertThat(locationInfo.getClassName(), equalTo(ESLoggerTests.class.getCanonicalName())); assertThat(locationInfo.getMethodName(), equalTo("testLocationInfoTest")); event = events.get(1); assertThat(event, notNullValue()); @@ -107,7 +105,7 @@ public class Log4jESLoggerTests extends ESTestCase { assertThat(event.getRenderedMessage(), equalTo("This is a warning")); locationInfo = event.getLocationInformation(); assertThat(locationInfo, notNullValue()); - assertThat(locationInfo.getClassName(), equalTo(Log4jESLoggerTests.class.getCanonicalName())); + assertThat(locationInfo.getClassName(), equalTo(ESLoggerTests.class.getCanonicalName())); assertThat(locationInfo.getMethodName(), equalTo("testLocationInfoTest")); event = events.get(2); assertThat(event, notNullValue()); @@ -115,7 +113,7 @@ public class Log4jESLoggerTests extends ESTestCase { assertThat(event.getRenderedMessage(), equalTo("This is an info")); locationInfo = event.getLocationInformation(); assertThat(locationInfo, notNullValue()); - assertThat(locationInfo.getClassName(), equalTo(Log4jESLoggerTests.class.getCanonicalName())); + assertThat(locationInfo.getClassName(), equalTo(ESLoggerTests.class.getCanonicalName())); assertThat(locationInfo.getMethodName(), equalTo("testLocationInfoTest")); event = events.get(3); assertThat(event, notNullValue()); @@ -123,7 +121,7 @@ public class Log4jESLoggerTests extends ESTestCase { assertThat(event.getRenderedMessage(), equalTo("This is a debug")); locationInfo = event.getLocationInformation(); assertThat(locationInfo, notNullValue()); - assertThat(locationInfo.getClassName(), equalTo(Log4jESLoggerTests.class.getCanonicalName())); + assertThat(locationInfo.getClassName(), equalTo(ESLoggerTests.class.getCanonicalName())); assertThat(locationInfo.getMethodName(), equalTo("testLocationInfoTest")); event = events.get(4); assertThat(event, notNullValue()); @@ -131,7 +129,7 @@ public class Log4jESLoggerTests extends ESTestCase { assertThat(event.getRenderedMessage(), equalTo("This is a trace")); locationInfo = event.getLocationInformation(); assertThat(locationInfo, notNullValue()); - assertThat(locationInfo.getClassName(), equalTo(Log4jESLoggerTests.class.getCanonicalName())); + assertThat(locationInfo.getClassName(), equalTo(ESLoggerTests.class.getCanonicalName())); assertThat(locationInfo.getMethodName(), equalTo("testLocationInfoTest")); } diff --git a/core/src/test/java/org/elasticsearch/common/logging/log4j/LoggingConfigurationTests.java b/core/src/test/java/org/elasticsearch/common/logging/LoggingConfigurationTests.java similarity index 90% rename from core/src/test/java/org/elasticsearch/common/logging/log4j/LoggingConfigurationTests.java rename to core/src/test/java/org/elasticsearch/common/logging/LoggingConfigurationTests.java index 5d90edaf7a5..a6dda573304 100644 --- a/core/src/test/java/org/elasticsearch/common/logging/log4j/LoggingConfigurationTests.java +++ b/core/src/test/java/org/elasticsearch/common/logging/LoggingConfigurationTests.java @@ -17,12 +17,11 @@ * under the License. */ -package org.elasticsearch.common.logging.log4j; +package org.elasticsearch.common.logging; import org.apache.log4j.Appender; import org.apache.log4j.Logger; import org.elasticsearch.common.cli.CliToolTestCase; -import org.elasticsearch.common.logging.ESLogger; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.env.Environment; import org.elasticsearch.node.internal.InternalSettingsPreparer; @@ -50,7 +49,7 @@ public class LoggingConfigurationTests extends ESTestCase { } public void testResolveMultipleConfigs() throws Exception { - String level = Log4jESLoggerFactory.getLogger("test").getLevel(); + String level = ESLoggerFactory.getLogger("test").getLevel(); try { Path configDir = getDataPath("config"); Settings settings = Settings.builder() @@ -59,22 +58,22 @@ public class LoggingConfigurationTests extends ESTestCase { .build(); LogConfigurator.configure(settings, true); - ESLogger esLogger = Log4jESLoggerFactory.getLogger("test"); - Logger logger = ((Log4jESLogger) esLogger).logger(); + ESLogger esLogger = ESLoggerFactory.getLogger("test"); + Logger logger = esLogger.getLogger(); Appender appender = logger.getAppender("console"); assertThat(appender, notNullValue()); - esLogger = Log4jESLoggerFactory.getLogger("second"); - logger = ((Log4jESLogger) esLogger).logger(); + esLogger = ESLoggerFactory.getLogger("second"); + logger = esLogger.getLogger(); appender = logger.getAppender("console2"); assertThat(appender, notNullValue()); - esLogger = Log4jESLoggerFactory.getLogger("third"); - logger = ((Log4jESLogger) esLogger).logger(); + esLogger = ESLoggerFactory.getLogger("third"); + logger = esLogger.getLogger(); appender = logger.getAppender("console3"); assertThat(appender, notNullValue()); } finally { - Log4jESLoggerFactory.getLogger("test").setLevel(level); + ESLoggerFactory.getLogger("test").setLevel(level); } } @@ -166,8 +165,8 @@ public class LoggingConfigurationTests extends ESTestCase { .build(), new CliToolTestCase.MockTerminal()); LogConfigurator.configure(environment.settings(), true); // args should overwrite whatever is in the config - ESLogger esLogger = Log4jESLoggerFactory.getLogger("test_resolve_order"); - Logger logger = ((Log4jESLogger) esLogger).logger(); + ESLogger esLogger = ESLoggerFactory.getLogger("test_resolve_order"); + Logger logger = esLogger.getLogger(); Appender appender = logger.getAppender("console"); assertThat(appender, notNullValue()); assertTrue(logger.isTraceEnabled()); @@ -190,10 +189,10 @@ public class LoggingConfigurationTests extends ESTestCase { .put(Environment.PATH_HOME_SETTING.getKey(), createTempDir().toString()) .build(), new CliToolTestCase.MockTerminal()); LogConfigurator.configure(environment.settings(), false); - ESLogger esLogger = Log4jESLoggerFactory.getLogger("test_config_not_read"); + ESLogger esLogger = ESLoggerFactory.getLogger("test_config_not_read"); assertNotNull(esLogger); - Logger logger = ((Log4jESLogger) esLogger).logger(); + Logger logger = esLogger.getLogger(); Appender appender = logger.getAppender("console"); // config was not read assertNull(appender); diff --git a/core/src/test/java/org/elasticsearch/common/logging/jdk/JDKESLoggerTests.java b/core/src/test/java/org/elasticsearch/common/logging/jdk/JDKESLoggerTests.java deleted file mode 100644 index 92dd9ffc012..00000000000 --- a/core/src/test/java/org/elasticsearch/common/logging/jdk/JDKESLoggerTests.java +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.common.logging.jdk; - -import org.elasticsearch.common.logging.ESLogger; -import org.elasticsearch.test.ESTestCase; - -import java.util.ArrayList; -import java.util.List; -import java.util.logging.Handler; -import java.util.logging.Level; -import java.util.logging.LogRecord; -import java.util.logging.Logger; - -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.notNullValue; - -public class JDKESLoggerTests extends ESTestCase { - - private ESLogger esTestLogger; - private TestHandler testHandler; - - @Override - public void setUp() throws Exception { - super.setUp(); - - JdkESLoggerFactory esTestLoggerFactory = new JdkESLoggerFactory(); - esTestLogger = esTestLoggerFactory.newInstance("test"); - Logger testLogger = ((JdkESLogger) esTestLogger).logger(); - testLogger.setLevel(Level.FINEST); - assertThat(testLogger.getLevel(), equalTo(Level.FINEST)); - testHandler = new TestHandler(); - testLogger.addHandler(testHandler); - } - - public void testLocationInfoTest() { - esTestLogger.error("This is an error"); - esTestLogger.warn("This is a warning"); - esTestLogger.info("This is an info"); - esTestLogger.debug("This is a debug"); - esTestLogger.trace("This is a trace"); - List records = testHandler.getEvents(); - assertThat(records, notNullValue()); - assertThat(records.size(), equalTo(5)); - LogRecord record = records.get(0); - assertThat(record, notNullValue()); - assertThat(record.getLevel(), equalTo(Level.SEVERE)); - assertThat(record.getMessage(), equalTo("This is an error")); - assertThat(record.getSourceClassName(), equalTo(JDKESLoggerTests.class.getCanonicalName())); - assertThat(record.getSourceMethodName(), equalTo("testLocationInfoTest")); - record = records.get(1); - assertThat(record, notNullValue()); - assertThat(record.getLevel(), equalTo(Level.WARNING)); - assertThat(record.getMessage(), equalTo("This is a warning")); - assertThat(record.getSourceClassName(), equalTo(JDKESLoggerTests.class.getCanonicalName())); - assertThat(record.getSourceMethodName(), equalTo("testLocationInfoTest")); - record = records.get(2); - assertThat(record, notNullValue()); - assertThat(record.getLevel(), equalTo(Level.INFO)); - assertThat(record.getMessage(), equalTo("This is an info")); - assertThat(record.getSourceClassName(), equalTo(JDKESLoggerTests.class.getCanonicalName())); - assertThat(record.getSourceMethodName(), equalTo("testLocationInfoTest")); - record = records.get(3); - assertThat(record, notNullValue()); - assertThat(record.getLevel(), equalTo(Level.FINE)); - assertThat(record.getMessage(), equalTo("This is a debug")); - assertThat(record.getSourceClassName(), equalTo(JDKESLoggerTests.class.getCanonicalName())); - assertThat(record.getSourceMethodName(), equalTo("testLocationInfoTest")); - record = records.get(4); - assertThat(record, notNullValue()); - assertThat(record.getLevel(), equalTo(Level.FINEST)); - assertThat(record.getMessage(), equalTo("This is a trace")); - assertThat(record.getSourceClassName(), equalTo(JDKESLoggerTests.class.getCanonicalName())); - assertThat(record.getSourceMethodName(), equalTo("testLocationInfoTest")); - } - - public void testSetLogLevelString() { - // verify the string based level-setters - esTestLogger.setLevel("error"); - assertThat(esTestLogger.getLevel(), equalTo("SEVERE")); - esTestLogger.setLevel("warn"); - assertThat(esTestLogger.getLevel(), equalTo("WARNING")); - esTestLogger.setLevel("info"); - assertThat(esTestLogger.getLevel(), equalTo("INFO")); - esTestLogger.setLevel("debug"); - assertThat(esTestLogger.getLevel(), equalTo("FINE")); - esTestLogger.setLevel("trace"); - assertThat(esTestLogger.getLevel(), equalTo("FINEST")); - } - - private static class TestHandler extends Handler { - - private List records = new ArrayList<>(); - - @Override - public void close() { - } - - public List getEvents() { - return records; - } - - @Override - public void publish(LogRecord record) { - // Forces it to generate the location information - record.getSourceClassName(); - records.add(record); - } - - @Override - public void flush() { - } - } -} diff --git a/core/src/test/resources/org/elasticsearch/common/logging/log4j/config/logging.yml b/core/src/test/resources/org/elasticsearch/common/logging/config/logging.yml similarity index 100% rename from core/src/test/resources/org/elasticsearch/common/logging/log4j/config/logging.yml rename to core/src/test/resources/org/elasticsearch/common/logging/config/logging.yml diff --git a/core/src/test/resources/org/elasticsearch/common/logging/log4j/config/test2/logging.yml b/core/src/test/resources/org/elasticsearch/common/logging/config/test2/logging.yml similarity index 100% rename from core/src/test/resources/org/elasticsearch/common/logging/log4j/config/test2/logging.yml rename to core/src/test/resources/org/elasticsearch/common/logging/config/test2/logging.yml diff --git a/core/src/test/resources/org/elasticsearch/common/logging/log4j/config/test2/test3/logging.yml b/core/src/test/resources/org/elasticsearch/common/logging/config/test2/test3/logging.yml similarity index 100% rename from core/src/test/resources/org/elasticsearch/common/logging/log4j/config/test2/test3/logging.yml rename to core/src/test/resources/org/elasticsearch/common/logging/config/test2/test3/logging.yml diff --git a/distribution/build.gradle b/distribution/build.gradle index dffb4ef12b2..d70f0254f3b 100644 --- a/distribution/build.gradle +++ b/distribution/build.gradle @@ -39,7 +39,7 @@ buildscript { } // this is common configuration for distributions, but we also add it here for the license check to use -ext.dependencyFiles = project(':core').configurations.runtime.copyRecursive().exclude(module: 'slf4j-api') +ext.dependencyFiles = project(':core').configurations.runtime.copyRecursive() /***************************************************************************** diff --git a/plugins/lang-python/build.gradle b/plugins/lang-python/build.gradle index c541b2a3ed3..0980d7f62c9 100644 --- a/plugins/lang-python/build.gradle +++ b/plugins/lang-python/build.gradle @@ -505,6 +505,8 @@ thirdPartyAudit.excludes = [ 'org.python.objectweb.asm.tree.analysis.BasicVerifier', 'org.python.objectweb.asm.tree.analysis.Frame', 'org.python.objectweb.asm.tree.analysis.SimpleVerifier', + 'org.slf4j.Logger', + 'org.slf4j.LoggerFactory', 'org.tukaani.xz.ARMOptions', 'org.tukaani.xz.ARMThumbOptions', 'org.tukaani.xz.DeltaOptions', diff --git a/plugins/repository-azure/build.gradle b/plugins/repository-azure/build.gradle index 122bd6dfa80..bcd60abb89e 100644 --- a/plugins/repository-azure/build.gradle +++ b/plugins/repository-azure/build.gradle @@ -35,3 +35,8 @@ dependencyLicenses { mapping from: /stax-.*/, to: 'stax' } +thirdPartyAudit.excludes = [ + // Optional and not enabled by Elasticsearch + 'org.slf4j.Logger', + 'org.slf4j.LoggerFactory', +] diff --git a/plugins/repository-hdfs/build.gradle b/plugins/repository-hdfs/build.gradle index 924f8cd1d42..915a85ebdc4 100644 --- a/plugins/repository-hdfs/build.gradle +++ b/plugins/repository-hdfs/build.gradle @@ -357,4 +357,8 @@ thirdPartyAudit.excludes = [ // internal java api: sun.misc.SignalHandler 'org.apache.hadoop.util.SignalLogger$Handler', + + // optional dependencies of slf4j-api + 'org.slf4j.impl.StaticMDCBinder', + 'org.slf4j.impl.StaticMarkerBinder', ] diff --git a/plugins/repository-hdfs/licenses/slf4j-api-1.6.2.jar.sha1 b/plugins/repository-hdfs/licenses/slf4j-api-1.6.2.jar.sha1 new file mode 100644 index 00000000000..a2f93ea5580 --- /dev/null +++ b/plugins/repository-hdfs/licenses/slf4j-api-1.6.2.jar.sha1 @@ -0,0 +1 @@ +8619e95939167fb37245b5670135e4feb0ec7d50 \ No newline at end of file diff --git a/plugins/repository-hdfs/licenses/slf4j-api-LICENSE.txt b/plugins/repository-hdfs/licenses/slf4j-api-LICENSE.txt new file mode 100644 index 00000000000..8fda22f4d72 --- /dev/null +++ b/plugins/repository-hdfs/licenses/slf4j-api-LICENSE.txt @@ -0,0 +1,21 @@ +Copyright (c) 2004-2014 QOS.ch +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/plugins/repository-hdfs/licenses/slf4j-api-NOTICE.txt b/plugins/repository-hdfs/licenses/slf4j-api-NOTICE.txt new file mode 100644 index 00000000000..e69de29bb2d