浏览代码

Remove slowlog level (#57591)

Setting a slow log level requires an unnecessary conditional logic in SearchSlowLog and IndexingSlowLog
The behaviour of setting a level on a slow logger can be achieved with correct slow log threshold settings.
This PR is removing slow log and modifies tests to achieve the same behaviour with changing threshold.
relates #56171
Przemyslaw Gomulka 5 年之前
父节点
当前提交
0dfc83ab3d

+ 9 - 64
docs/reference/index-modules/slowlog.asciidoc

@@ -22,12 +22,10 @@ index.search.slowlog.threshold.fetch.warn: 1s
 index.search.slowlog.threshold.fetch.info: 800ms
 index.search.slowlog.threshold.fetch.info: 800ms
 index.search.slowlog.threshold.fetch.debug: 500ms
 index.search.slowlog.threshold.fetch.debug: 500ms
 index.search.slowlog.threshold.fetch.trace: 200ms
 index.search.slowlog.threshold.fetch.trace: 200ms
-
-index.search.slowlog.level: info
 --------------------------------------------------
 --------------------------------------------------
 
 
 All of the above settings are _dynamic_ and can be set for each index using the
 All of the above settings are _dynamic_ and can be set for each index using the
-<<indices-update-settings, update indices settings>> API. For example: 
+<<indices-update-settings, update indices settings>> API. For example:
 
 
 [source,console]
 [source,console]
 --------------------------------------------------
 --------------------------------------------------
@@ -40,17 +38,12 @@ PUT /twitter/_settings
     "index.search.slowlog.threshold.fetch.warn": "1s",
     "index.search.slowlog.threshold.fetch.warn": "1s",
     "index.search.slowlog.threshold.fetch.info": "800ms",
     "index.search.slowlog.threshold.fetch.info": "800ms",
     "index.search.slowlog.threshold.fetch.debug": "500ms",
     "index.search.slowlog.threshold.fetch.debug": "500ms",
-    "index.search.slowlog.threshold.fetch.trace": "200ms",
-    "index.search.slowlog.level": "info"
+    "index.search.slowlog.threshold.fetch.trace": "200ms"
 }
 }
 --------------------------------------------------
 --------------------------------------------------
 // TEST[setup:twitter]
 // TEST[setup:twitter]
 
 
-By default, none are enabled (set to `-1`). Levels (`warn`, `info`,
-`debug`, `trace`) allow to control under which logging level the log
-will be logged. Not all are required to be configured (for example, only
-`warn` threshold can be set). The benefit of several levels is the
-ability to quickly "grep" for specific thresholds breached.
+By default thresholds are disabled (set to `-1`).
 
 
 The logging is done on the shard level scope, meaning the execution of a
 The logging is done on the shard level scope, meaning the execution of a
 search request within a specific shard. It does not encompass the whole
 search request within a specific shard. It does not encompass the whole
@@ -59,40 +52,15 @@ execute. Some of the benefits of shard level logging is the association
 of the actual execution on the specific machine, compared with request
 of the actual execution on the specific machine, compared with request
 level.
 level.
 
 
-The logging file is configured by default using the following
-configuration (found in `log4j2.properties`):
 
 
-[source,properties]
---------------------------------------------------
-appender.index_search_slowlog_rolling.type = RollingFile
-appender.index_search_slowlog_rolling.name = index_search_slowlog_rolling
-appender.index_search_slowlog_rolling.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_index_search_slowlog.log
-appender.index_search_slowlog_rolling.layout.type = PatternLayout
-appender.index_search_slowlog_rolling.layout.pattern = [%d{ISO8601}][%-5p][%-25c] [%node_name]%marker %.-10000m%n
-appender.index_search_slowlog_rolling.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_index_search_slowlog-%i.log.gz
-appender.index_search_slowlog_rolling.policies.type = Policies
-appender.index_search_slowlog_rolling.policies.size.type = SizeBasedTriggeringPolicy
-appender.index_search_slowlog_rolling.policies.size.size = 1GB
-appender.index_search_slowlog_rolling.strategy.type = DefaultRolloverStrategy
-appender.index_search_slowlog_rolling.strategy.max = 4
-
-logger.index_search_slowlog_rolling.name = index.search.slowlog
-logger.index_search_slowlog_rolling.level = trace
-logger.index_search_slowlog_rolling.appenderRef.index_search_slowlog_rolling.ref = index_search_slowlog_rolling
-logger.index_search_slowlog_rolling.additivity = false
---------------------------------------------------
+The search slow log file is configured in the `log4j2.properties` file.
 
 
 [float]
 [float]
 ==== Identifying search slow log origin
 ==== Identifying search slow log origin
 
 
 It is often useful to identify what triggered a slow running query. If a call was initiated with an `X-Opaque-ID` header, then the user ID
 It is often useful to identify what triggered a slow running query. If a call was initiated with an `X-Opaque-ID` header, then the user ID
-is included in Search Slow logs as an additional **id** field (scroll to the right).
-[source,txt]
----------------------------
-[2030-08-30T11:59:37,786][WARN ][i.s.s.query              ] [node-0] [index6][0] took[78.4micros], took_millis[0], total_hits[0 hits], stats[], search_type[QUERY_THEN_FETCH], total_shards[1], source[{"query":{"match_all":{"boost":1.0}}}], id[MY_USER_ID],
----------------------------
-// NOTCONSOLE
-The user ID is also included in JSON logs.
+is included in Search Slow logs as an additional **id** field
+
 [source,js]
 [source,js]
 ---------------------------
 ---------------------------
 {
 {
@@ -122,7 +90,7 @@ The user ID is also included in JSON logs.
 === Index Slow log
 === Index Slow log
 
 
 The indexing slow log, similar in functionality to the search slow
 The indexing slow log, similar in functionality to the search slow
-log. The log file name ends with `_index_indexing_slowlog.log`. Log and
+log. The log file name ends with `_index_indexing_slowlog.json`. Log and
 the thresholds are configured in the same way as the search slowlog.
 the thresholds are configured in the same way as the search slowlog.
 Index slowlog sample:
 Index slowlog sample:
 
 
@@ -132,12 +100,11 @@ index.indexing.slowlog.threshold.index.warn: 10s
 index.indexing.slowlog.threshold.index.info: 5s
 index.indexing.slowlog.threshold.index.info: 5s
 index.indexing.slowlog.threshold.index.debug: 2s
 index.indexing.slowlog.threshold.index.debug: 2s
 index.indexing.slowlog.threshold.index.trace: 500ms
 index.indexing.slowlog.threshold.index.trace: 500ms
-index.indexing.slowlog.level: info
 index.indexing.slowlog.source: 1000
 index.indexing.slowlog.source: 1000
 --------------------------------------------------
 --------------------------------------------------
 
 
 All of the above settings are _dynamic_ and can be set for each index using the
 All of the above settings are _dynamic_ and can be set for each index using the
-<<indices-update-settings, update indices settings>> API. For example: 
+<<indices-update-settings, update indices settings>> API. For example:
 
 
 [source,console]
 [source,console]
 --------------------------------------------------
 --------------------------------------------------
@@ -147,7 +114,6 @@ PUT /twitter/_settings
     "index.indexing.slowlog.threshold.index.info": "5s",
     "index.indexing.slowlog.threshold.index.info": "5s",
     "index.indexing.slowlog.threshold.index.debug": "2s",
     "index.indexing.slowlog.threshold.index.debug": "2s",
     "index.indexing.slowlog.threshold.index.trace": "500ms",
     "index.indexing.slowlog.threshold.index.trace": "500ms",
-    "index.indexing.slowlog.level": "info",
     "index.indexing.slowlog.source": "1000"
     "index.indexing.slowlog.source": "1000"
 }
 }
 --------------------------------------------------
 --------------------------------------------------
@@ -162,25 +128,4 @@ the original document format is important, you can turn off reformatting by sett
 `index.indexing.slowlog.reformat` to `false`, which will cause the source to be
 `index.indexing.slowlog.reformat` to `false`, which will cause the source to be
 logged "as is" and can potentially span multiple log lines.
 logged "as is" and can potentially span multiple log lines.
 
 
-The index slow log file is configured by default in the `log4j2.properties`
-file:
-
-[source,properties]
---------------------------------------------------
-appender.index_indexing_slowlog_rolling.type = RollingFile
-appender.index_indexing_slowlog_rolling.name = index_indexing_slowlog_rolling
-appender.index_indexing_slowlog_rolling.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_index_indexing_slowlog.log
-appender.index_indexing_slowlog_rolling.layout.type = PatternLayout
-appender.index_indexing_slowlog_rolling.layout.pattern = [%d{ISO8601}][%-5p][%-25c] [%node_name]%marker %.-10000m%n
-appender.index_indexing_slowlog_rolling.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_index_indexing_slowlog-%i.log.gz
-appender.index_indexing_slowlog_rolling.policies.type = Policies
-appender.index_indexing_slowlog_rolling.policies.size.type = SizeBasedTriggeringPolicy
-appender.index_indexing_slowlog_rolling.policies.size.size = 1GB
-appender.index_indexing_slowlog_rolling.strategy.type = DefaultRolloverStrategy
-appender.index_indexing_slowlog_rolling.strategy.max = 4
-
-logger.index_indexing_slowlog.name = index.indexing.slowlog.index
-logger.index_indexing_slowlog.level = trace
-logger.index_indexing_slowlog.appenderRef.index_indexing_slowlog_rolling.ref = index_indexing_slowlog_rolling
-logger.index_indexing_slowlog.additivity = false
---------------------------------------------------
+The index slow log file is configured in the `log4j2.properties` file.

+ 7 - 0
docs/reference/release-notes/8.0.0-alpha1.asciidoc

@@ -18,4 +18,11 @@ Mapping::
 Deprecations::
 Deprecations::
 * Remove undocumented endpoints of hot threads API {pull}55109[#55109]
 * Remove undocumented endpoints of hot threads API {pull}55109[#55109]
 
 
+Slow loggers::
+* `index.indexing.slowlog.level` and `index.search.slowlog.level` are removed. These settings can be worked around
+by using appropriate thresholds. If for instance we want to simulate `index.indexing.slowlog.level` = `INFO` then
+all we need to do is to set `index.indexing.slowlog.threshold.index.debug` and
+`index.indexing.slowlog.threshold.index.trace` to `-1` {pull}57591[#57591]
+
+
 coming[8.0.0]
 coming[8.0.0]

+ 0 - 2
server/src/main/java/org/elasticsearch/common/settings/IndexScopedSettings.java

@@ -88,12 +88,10 @@ public final class IndexScopedSettings extends AbstractScopedSettings {
             SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_DEBUG_SETTING,
             SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_DEBUG_SETTING,
             SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_INFO_SETTING,
             SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_INFO_SETTING,
             SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_TRACE_SETTING,
             SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_TRACE_SETTING,
-            SearchSlowLog.INDEX_SEARCH_SLOWLOG_LEVEL,
             IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_WARN_SETTING,
             IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_WARN_SETTING,
             IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_DEBUG_SETTING,
             IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_DEBUG_SETTING,
             IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_INFO_SETTING,
             IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_INFO_SETTING,
             IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_TRACE_SETTING,
             IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_TRACE_SETTING,
-            IndexingSlowLog.INDEX_INDEXING_SLOWLOG_LEVEL_SETTING,
             IndexingSlowLog.INDEX_INDEXING_SLOWLOG_REFORMAT_SETTING,
             IndexingSlowLog.INDEX_INDEXING_SLOWLOG_REFORMAT_SETTING,
             IndexingSlowLog.INDEX_INDEXING_SLOWLOG_MAX_SOURCE_CHARS_TO_LOG_SETTING,
             IndexingSlowLog.INDEX_INDEXING_SLOWLOG_MAX_SOURCE_CHARS_TO_LOG_SETTING,
             MergePolicyConfig.INDEX_COMPOUND_FORMAT_SETTING,
             MergePolicyConfig.INDEX_COMPOUND_FORMAT_SETTING,

+ 6 - 20
server/src/main/java/org/elasticsearch/index/IndexingSlowLog.java

@@ -19,6 +19,7 @@
 
 
 package org.elasticsearch.index;
 package org.elasticsearch.index;
 
 
+import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.util.StringBuilders;
 import org.apache.logging.log4j.util.StringBuilders;
@@ -58,9 +59,6 @@ public final class IndexingSlowLog implements IndexingOperationListener {
             TimeValue.timeValueMillis(-1), Property.Dynamic, Property.IndexScope);
             TimeValue.timeValueMillis(-1), Property.Dynamic, Property.IndexScope);
     public static final Setting<Boolean> INDEX_INDEXING_SLOWLOG_REFORMAT_SETTING =
     public static final Setting<Boolean> INDEX_INDEXING_SLOWLOG_REFORMAT_SETTING =
         Setting.boolSetting(INDEX_INDEXING_SLOWLOG_PREFIX +".reformat", true, Property.Dynamic, Property.IndexScope);
         Setting.boolSetting(INDEX_INDEXING_SLOWLOG_PREFIX +".reformat", true, Property.Dynamic, Property.IndexScope);
-    public static final Setting<SlowLogLevel> INDEX_INDEXING_SLOWLOG_LEVEL_SETTING =
-        new Setting<>(INDEX_INDEXING_SLOWLOG_PREFIX +".level", SlowLogLevel.TRACE.name(), SlowLogLevel::parse, Property.Dynamic,
-            Property.IndexScope);
 
 
     private final Logger indexLogger;
     private final Logger indexLogger;
     private final Index index;
     private final Index index;
@@ -75,7 +73,6 @@ public final class IndexingSlowLog implements IndexingOperationListener {
      * <em>characters</em> of the source.
      * <em>characters</em> of the source.
      */
      */
     private int maxSourceCharsToLog;
     private int maxSourceCharsToLog;
-    private SlowLogLevel level;
 
 
     /**
     /**
      * Reads how much of the source to log. The user can specify any value they
      * Reads how much of the source to log. The user can specify any value they
@@ -94,7 +91,7 @@ public final class IndexingSlowLog implements IndexingOperationListener {
 
 
     IndexingSlowLog(IndexSettings indexSettings) {
     IndexingSlowLog(IndexSettings indexSettings) {
         this.indexLogger = LogManager.getLogger(INDEX_INDEXING_SLOWLOG_PREFIX + ".index");
         this.indexLogger = LogManager.getLogger(INDEX_INDEXING_SLOWLOG_PREFIX + ".index");
-        Loggers.setLevel(this.indexLogger, SlowLogLevel.TRACE.name());
+        Loggers.setLevel(this.indexLogger, Level.TRACE);
         this.index = indexSettings.getIndex();
         this.index = indexSettings.getIndex();
 
 
         indexSettings.getScopedSettings().addSettingsUpdateConsumer(INDEX_INDEXING_SLOWLOG_REFORMAT_SETTING, this::setReformat);
         indexSettings.getScopedSettings().addSettingsUpdateConsumer(INDEX_INDEXING_SLOWLOG_REFORMAT_SETTING, this::setReformat);
@@ -111,8 +108,6 @@ public final class IndexingSlowLog implements IndexingOperationListener {
         indexSettings.getScopedSettings()
         indexSettings.getScopedSettings()
                 .addSettingsUpdateConsumer(INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_TRACE_SETTING, this::setTraceThreshold);
                 .addSettingsUpdateConsumer(INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_TRACE_SETTING, this::setTraceThreshold);
         this.indexTraceThreshold = indexSettings.getValue(INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_TRACE_SETTING).nanos();
         this.indexTraceThreshold = indexSettings.getValue(INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_TRACE_SETTING).nanos();
-        indexSettings.getScopedSettings().addSettingsUpdateConsumer(INDEX_INDEXING_SLOWLOG_LEVEL_SETTING, this::setLevel);
-        setLevel(indexSettings.getValue(INDEX_INDEXING_SLOWLOG_LEVEL_SETTING));
         indexSettings.getScopedSettings().addSettingsUpdateConsumer(INDEX_INDEXING_SLOWLOG_MAX_SOURCE_CHARS_TO_LOG_SETTING,
         indexSettings.getScopedSettings().addSettingsUpdateConsumer(INDEX_INDEXING_SLOWLOG_MAX_SOURCE_CHARS_TO_LOG_SETTING,
                 this::setMaxSourceCharsToLog);
                 this::setMaxSourceCharsToLog);
         this.maxSourceCharsToLog = indexSettings.getValue(INDEX_INDEXING_SLOWLOG_MAX_SOURCE_CHARS_TO_LOG_SETTING);
         this.maxSourceCharsToLog = indexSettings.getValue(INDEX_INDEXING_SLOWLOG_MAX_SOURCE_CHARS_TO_LOG_SETTING);
@@ -122,10 +117,6 @@ public final class IndexingSlowLog implements IndexingOperationListener {
         this.maxSourceCharsToLog = maxSourceCharsToLog;
         this.maxSourceCharsToLog = maxSourceCharsToLog;
     }
     }
 
 
-    private void setLevel(SlowLogLevel level) {
-        this.level = level;
-    }
-
     private void setWarnThreshold(TimeValue warnThreshold) {
     private void setWarnThreshold(TimeValue warnThreshold) {
         this.indexWarnThreshold = warnThreshold.nanos();
         this.indexWarnThreshold = warnThreshold.nanos();
     }
     }
@@ -151,14 +142,13 @@ public final class IndexingSlowLog implements IndexingOperationListener {
         if (result.getResultType() == Engine.Result.Type.SUCCESS) {
         if (result.getResultType() == Engine.Result.Type.SUCCESS) {
             final ParsedDocument doc = indexOperation.parsedDoc();
             final ParsedDocument doc = indexOperation.parsedDoc();
             final long tookInNanos = result.getTook();
             final long tookInNanos = result.getTook();
-            // when logger level is more specific than WARN AND event is within threshold it should be logged
-            if (indexWarnThreshold >= 0 && tookInNanos > indexWarnThreshold && level.isLevelEnabledFor(SlowLogLevel.WARN)) {
+            if (indexWarnThreshold >= 0 && tookInNanos > indexWarnThreshold) {
                 indexLogger.warn(IndexingSlowLogMessage.of(index, doc, tookInNanos, reformat, maxSourceCharsToLog));
                 indexLogger.warn(IndexingSlowLogMessage.of(index, doc, tookInNanos, reformat, maxSourceCharsToLog));
-            } else if (indexInfoThreshold >= 0 && tookInNanos > indexInfoThreshold && level.isLevelEnabledFor(SlowLogLevel.INFO)) {
+            } else if (indexInfoThreshold >= 0 && tookInNanos > indexInfoThreshold) {
                 indexLogger.info(IndexingSlowLogMessage.of(index, doc, tookInNanos, reformat, maxSourceCharsToLog));
                 indexLogger.info(IndexingSlowLogMessage.of(index, doc, tookInNanos, reformat, maxSourceCharsToLog));
-            } else if (indexDebugThreshold >= 0 && tookInNanos > indexDebugThreshold && level.isLevelEnabledFor(SlowLogLevel.DEBUG)) {
+            } else if (indexDebugThreshold >= 0 && tookInNanos > indexDebugThreshold) {
                 indexLogger.debug(IndexingSlowLogMessage.of(index, doc, tookInNanos, reformat, maxSourceCharsToLog));
                 indexLogger.debug(IndexingSlowLogMessage.of(index, doc, tookInNanos, reformat, maxSourceCharsToLog));
-            } else if (indexTraceThreshold >= 0 && tookInNanos > indexTraceThreshold && level.isLevelEnabledFor(SlowLogLevel.TRACE)) {
+            } else if (indexTraceThreshold >= 0 && tookInNanos > indexTraceThreshold) {
                 indexLogger.trace(IndexingSlowLogMessage.of(index, doc, tookInNanos, reformat, maxSourceCharsToLog));
                 indexLogger.trace(IndexingSlowLogMessage.of(index, doc, tookInNanos, reformat, maxSourceCharsToLog));
             }
             }
         }
         }
@@ -232,8 +222,4 @@ public final class IndexingSlowLog implements IndexingOperationListener {
         return maxSourceCharsToLog;
         return maxSourceCharsToLog;
     }
     }
 
 
-    SlowLogLevel getLevel() {
-        return level;
-    }
-
 }
 }

+ 11 - 24
server/src/main/java/org/elasticsearch/index/SearchSlowLog.java

@@ -20,6 +20,7 @@
 package org.elasticsearch.index;
 package org.elasticsearch.index;
 
 
 import com.fasterxml.jackson.core.io.JsonStringEncoder;
 import com.fasterxml.jackson.core.io.JsonStringEncoder;
+import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.Logger;
 import org.elasticsearch.common.logging.ESLogMessage;
 import org.elasticsearch.common.logging.ESLogMessage;
@@ -80,18 +81,14 @@ public final class SearchSlowLog implements SearchOperationListener {
     public static final Setting<TimeValue> INDEX_SEARCH_SLOWLOG_THRESHOLD_FETCH_TRACE_SETTING =
     public static final Setting<TimeValue> INDEX_SEARCH_SLOWLOG_THRESHOLD_FETCH_TRACE_SETTING =
         Setting.timeSetting(INDEX_SEARCH_SLOWLOG_PREFIX + ".threshold.fetch.trace", TimeValue.timeValueNanos(-1),
         Setting.timeSetting(INDEX_SEARCH_SLOWLOG_PREFIX + ".threshold.fetch.trace", TimeValue.timeValueNanos(-1),
             TimeValue.timeValueMillis(-1), Property.Dynamic, Property.IndexScope);
             TimeValue.timeValueMillis(-1), Property.Dynamic, Property.IndexScope);
-    public static final Setting<SlowLogLevel> INDEX_SEARCH_SLOWLOG_LEVEL =
-        new Setting<>(INDEX_SEARCH_SLOWLOG_PREFIX + ".level", SlowLogLevel.TRACE.name(), SlowLogLevel::parse, Property.Dynamic,
-            Property.IndexScope);
 
 
     private static final ToXContent.Params FORMAT_PARAMS = new ToXContent.MapParams(Collections.singletonMap("pretty", "false"));
     private static final ToXContent.Params FORMAT_PARAMS = new ToXContent.MapParams(Collections.singletonMap("pretty", "false"));
-    private SlowLogLevel level;
 
 
     public SearchSlowLog(IndexSettings indexSettings) {
     public SearchSlowLog(IndexSettings indexSettings) {
         this.queryLogger = LogManager.getLogger(INDEX_SEARCH_SLOWLOG_PREFIX + ".query");
         this.queryLogger = LogManager.getLogger(INDEX_SEARCH_SLOWLOG_PREFIX + ".query");
         this.fetchLogger = LogManager.getLogger(INDEX_SEARCH_SLOWLOG_PREFIX + ".fetch");
         this.fetchLogger = LogManager.getLogger(INDEX_SEARCH_SLOWLOG_PREFIX + ".fetch");
-        Loggers.setLevel(this.fetchLogger, SlowLogLevel.TRACE.name());
-        Loggers.setLevel(this.queryLogger, SlowLogLevel.TRACE.name());
+        Loggers.setLevel(this.fetchLogger, Level.TRACE);
+        Loggers.setLevel(this.queryLogger, Level.TRACE);
 
 
         indexSettings.getScopedSettings().addSettingsUpdateConsumer(INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_WARN_SETTING,
         indexSettings.getScopedSettings().addSettingsUpdateConsumer(INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_WARN_SETTING,
             this::setQueryWarnThreshold);
             this::setQueryWarnThreshold);
@@ -118,37 +115,30 @@ public final class SearchSlowLog implements SearchOperationListener {
         indexSettings.getScopedSettings().addSettingsUpdateConsumer(INDEX_SEARCH_SLOWLOG_THRESHOLD_FETCH_TRACE_SETTING,
         indexSettings.getScopedSettings().addSettingsUpdateConsumer(INDEX_SEARCH_SLOWLOG_THRESHOLD_FETCH_TRACE_SETTING,
             this::setFetchTraceThreshold);
             this::setFetchTraceThreshold);
         this.fetchTraceThreshold = indexSettings.getValue(INDEX_SEARCH_SLOWLOG_THRESHOLD_FETCH_TRACE_SETTING).nanos();
         this.fetchTraceThreshold = indexSettings.getValue(INDEX_SEARCH_SLOWLOG_THRESHOLD_FETCH_TRACE_SETTING).nanos();
-
-        indexSettings.getScopedSettings().addSettingsUpdateConsumer(INDEX_SEARCH_SLOWLOG_LEVEL, this::setLevel);
-        setLevel(indexSettings.getValue(INDEX_SEARCH_SLOWLOG_LEVEL));
-    }
-
-    private void setLevel(SlowLogLevel level) {
-        this.level = level;
     }
     }
 
 
     @Override
     @Override
     public void onQueryPhase(SearchContext context, long tookInNanos) {
     public void onQueryPhase(SearchContext context, long tookInNanos) {
-        if (queryWarnThreshold >= 0 && tookInNanos > queryWarnThreshold && level.isLevelEnabledFor(SlowLogLevel.WARN)) {
+        if (queryWarnThreshold >= 0 && tookInNanos > queryWarnThreshold) {
             queryLogger.warn(SearchSlowLogMessage.of(context, tookInNanos));
             queryLogger.warn(SearchSlowLogMessage.of(context, tookInNanos));
-        } else if (queryInfoThreshold >= 0 && tookInNanos > queryInfoThreshold && level.isLevelEnabledFor(SlowLogLevel.INFO)) {
+        } else if (queryInfoThreshold >= 0 && tookInNanos > queryInfoThreshold) {
             queryLogger.info(SearchSlowLogMessage.of(context, tookInNanos));
             queryLogger.info(SearchSlowLogMessage.of(context, tookInNanos));
-        } else if (queryDebugThreshold >= 0 && tookInNanos > queryDebugThreshold && level.isLevelEnabledFor(SlowLogLevel.DEBUG)) {
+        } else if (queryDebugThreshold >= 0 && tookInNanos > queryDebugThreshold) {
             queryLogger.debug(SearchSlowLogMessage.of(context, tookInNanos));
             queryLogger.debug(SearchSlowLogMessage.of(context, tookInNanos));
-        } else if (queryTraceThreshold >= 0 && tookInNanos > queryTraceThreshold && level.isLevelEnabledFor(SlowLogLevel.TRACE)) {
+        } else if (queryTraceThreshold >= 0 && tookInNanos > queryTraceThreshold) {
             queryLogger.trace(SearchSlowLogMessage.of(context, tookInNanos));
             queryLogger.trace(SearchSlowLogMessage.of(context, tookInNanos));
         }
         }
     }
     }
 
 
     @Override
     @Override
     public void onFetchPhase(SearchContext context, long tookInNanos) {
     public void onFetchPhase(SearchContext context, long tookInNanos) {
-        if (fetchWarnThreshold >= 0 && tookInNanos > fetchWarnThreshold && level.isLevelEnabledFor(SlowLogLevel.WARN)) {
+        if (fetchWarnThreshold >= 0 && tookInNanos > fetchWarnThreshold) {
             fetchLogger.warn(SearchSlowLogMessage.of(context, tookInNanos));
             fetchLogger.warn(SearchSlowLogMessage.of(context, tookInNanos));
-        } else if (fetchInfoThreshold >= 0 && tookInNanos > fetchInfoThreshold && level.isLevelEnabledFor(SlowLogLevel.INFO)) {
+        } else if (fetchInfoThreshold >= 0 && tookInNanos > fetchInfoThreshold) {
             fetchLogger.info(SearchSlowLogMessage.of(context, tookInNanos));
             fetchLogger.info(SearchSlowLogMessage.of(context, tookInNanos));
-        } else if (fetchDebugThreshold >= 0 && tookInNanos > fetchDebugThreshold && level.isLevelEnabledFor(SlowLogLevel.DEBUG)) {
+        } else if (fetchDebugThreshold >= 0 && tookInNanos > fetchDebugThreshold) {
             fetchLogger.debug(SearchSlowLogMessage.of(context, tookInNanos));
             fetchLogger.debug(SearchSlowLogMessage.of(context, tookInNanos));
-        } else if (fetchTraceThreshold >= 0 && tookInNanos > fetchTraceThreshold && level.isLevelEnabledFor(SlowLogLevel.TRACE)) {
+        } else if (fetchTraceThreshold >= 0 && tookInNanos > fetchTraceThreshold) {
             fetchLogger.trace(SearchSlowLogMessage.of(context, tookInNanos));
             fetchLogger.trace(SearchSlowLogMessage.of(context, tookInNanos));
         }
         }
     }
     }
@@ -257,7 +247,4 @@ public final class SearchSlowLog implements SearchOperationListener {
         return fetchTraceThreshold;
         return fetchTraceThreshold;
     }
     }
 
 
-    SlowLogLevel getLevel() {
-        return level;
-    }
 }
 }

+ 0 - 43
server/src/main/java/org/elasticsearch/index/SlowLogLevel.java

@@ -1,43 +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.index;
-
-import java.util.Locale;
-
-public enum SlowLogLevel {
-    WARN(3), // most specific - little logging
-    INFO(2),
-    DEBUG(1),
-    TRACE(0); // least specific - lots of logging
-
-    private final int specificity;
-
-    SlowLogLevel(int specificity) {
-        this.specificity = specificity;
-    }
-
-    public static SlowLogLevel parse(String level) {
-        return valueOf(level.toUpperCase(Locale.ROOT));
-    }
-
-    boolean isLevelEnabledFor(SlowLogLevel levelToBeUsed) {
-        // example: this.info(2) tries to log with levelToBeUsed.warn(3) - should allow
-        return this.specificity <= levelToBeUsed.specificity;
-    }
-}

+ 32 - 92
server/src/test/java/org/elasticsearch/index/IndexingSlowLogTests.java

@@ -20,6 +20,7 @@
 package org.elasticsearch.index;
 package org.elasticsearch.index;
 
 
 import com.fasterxml.jackson.core.JsonParseException;
 import com.fasterxml.jackson.core.JsonParseException;
+import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.core.LoggerContext;
 import org.apache.logging.log4j.core.LoggerContext;
@@ -82,7 +83,7 @@ public class IndexingSlowLogTests extends ESTestCase {
 
 
     public void testLevelPrecedence() {
     public void testLevelPrecedence() {
         String uuid = UUIDs.randomBase64UUID();
         String uuid = UUIDs.randomBase64UUID();
-        IndexMetadata metadata = createIndexMetadata(SlowLogLevel.WARN, "index-precedence", uuid);
+        IndexMetadata metadata = createIndexMetadata("index-precedence", settings(uuid));
         IndexSettings settings = new IndexSettings(metadata, Settings.EMPTY);
         IndexSettings settings = new IndexSettings(metadata, Settings.EMPTY);
         IndexingSlowLog log = new IndexingSlowLog(settings);
         IndexingSlowLog log = new IndexingSlowLog(settings);
 
 
@@ -92,61 +93,62 @@ public class IndexingSlowLogTests extends ESTestCase {
         Engine.IndexResult result = Mockito.mock(Engine.IndexResult.class);//(0, 0, SequenceNumbers.UNASSIGNED_SEQ_NO, false);
         Engine.IndexResult result = Mockito.mock(Engine.IndexResult.class);//(0, 0, SequenceNumbers.UNASSIGNED_SEQ_NO, false);
         Mockito.when(result.getResultType()).thenReturn(Engine.Result.Type.SUCCESS);
         Mockito.when(result.getResultType()).thenReturn(Engine.Result.Type.SUCCESS);
 
 
+        // For this test, when level is not breached, the level below should be used.
         {
         {
-            //level set to WARN, should only log when WARN limit is breached
             Mockito.when(result.getTook()).thenReturn(40L);
             Mockito.when(result.getTook()).thenReturn(40L);
             log.postIndex(ShardId.fromString("[index][123]"), index, result);
             log.postIndex(ShardId.fromString("[index][123]"), index, result);
-            assertNull(appender.getLastEventAndReset());
+            assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.INFO));
 
 
             Mockito.when(result.getTook()).thenReturn(41L);
             Mockito.when(result.getTook()).thenReturn(41L);
             log.postIndex(ShardId.fromString("[index][123]"), index, result);
             log.postIndex(ShardId.fromString("[index][123]"), index, result);
-            assertNotNull(appender.getLastEventAndReset());
-
+            assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.WARN));
         }
         }
 
 
         {
         {
-            // level set INFO, should log when INFO level is breached
-            settings.updateIndexMetadata(createIndexMetadata(SlowLogLevel.INFO, "index", uuid));
             Mockito.when(result.getTook()).thenReturn(30L);
             Mockito.when(result.getTook()).thenReturn(30L);
             log.postIndex(ShardId.fromString("[index][123]"), index, result);
             log.postIndex(ShardId.fromString("[index][123]"), index, result);
-            assertNull(appender.getLastEventAndReset());
+            assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.DEBUG));
 
 
             Mockito.when(result.getTook()).thenReturn(31L);
             Mockito.when(result.getTook()).thenReturn(31L);
             log.postIndex(ShardId.fromString("[index][123]"), index, result);
             log.postIndex(ShardId.fromString("[index][123]"), index, result);
-            assertNotNull(appender.getLastEventAndReset());
+            assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.INFO));
         }
         }
 
 
         {
         {
-            // level set DEBUG, should log when DEBUG level is breached
-            settings.updateIndexMetadata(createIndexMetadata(SlowLogLevel.DEBUG, "index", uuid));
             Mockito.when(result.getTook()).thenReturn(20L);
             Mockito.when(result.getTook()).thenReturn(20L);
             log.postIndex(ShardId.fromString("[index][123]"), index, result);
             log.postIndex(ShardId.fromString("[index][123]"), index, result);
-            assertNull(appender.getLastEventAndReset());
+            assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.TRACE));
 
 
             Mockito.when(result.getTook()).thenReturn(21L);
             Mockito.when(result.getTook()).thenReturn(21L);
             log.postIndex(ShardId.fromString("[index][123]"), index, result);
             log.postIndex(ShardId.fromString("[index][123]"), index, result);
-            assertNotNull(appender.getLastEventAndReset());
+            assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.DEBUG));
         }
         }
 
 
         {
         {
-            // level set TRACE, should log when TRACE level is breached
-            settings.updateIndexMetadata(createIndexMetadata(SlowLogLevel.TRACE, "index", uuid));
             Mockito.when(result.getTook()).thenReturn(10L);
             Mockito.when(result.getTook()).thenReturn(10L);
             log.postIndex(ShardId.fromString("[index][123]"), index, result);
             log.postIndex(ShardId.fromString("[index][123]"), index, result);
             assertNull(appender.getLastEventAndReset());
             assertNull(appender.getLastEventAndReset());
 
 
             Mockito.when(result.getTook()).thenReturn(11L);
             Mockito.when(result.getTook()).thenReturn(11L);
             log.postIndex(ShardId.fromString("[index][123]"), index, result);
             log.postIndex(ShardId.fromString("[index][123]"), index, result);
-            assertNotNull(appender.getLastEventAndReset());
+            assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.TRACE));
         }
         }
     }
     }
 
 
     public void testTwoLoggersDifferentLevel() {
     public void testTwoLoggersDifferentLevel() {
-        IndexSettings index1Settings = new IndexSettings(createIndexMetadata(SlowLogLevel.WARN, "index1", UUIDs.randomBase64UUID()),
+        IndexSettings index1Settings = new IndexSettings(createIndexMetadata("index1", Settings.builder()
+            .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT)
+            .put(IndexMetadata.SETTING_INDEX_UUID, UUIDs.randomBase64UUID())
+            .put(IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_WARN_SETTING.getKey(), "40nanos")
+            .build()),
             Settings.EMPTY);
             Settings.EMPTY);
         IndexingSlowLog log1 = new IndexingSlowLog(index1Settings);
         IndexingSlowLog log1 = new IndexingSlowLog(index1Settings);
 
 
-        IndexSettings index2Settings = new IndexSettings(createIndexMetadata(SlowLogLevel.TRACE, "index2", UUIDs.randomBase64UUID()),
+        IndexSettings index2Settings = new IndexSettings(createIndexMetadata("index2", Settings.builder()
+            .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT)
+            .put(IndexMetadata.SETTING_INDEX_UUID, UUIDs.randomBase64UUID())
+            .put(IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_TRACE_SETTING.getKey(), "10nanos")
+            .build()),
             Settings.EMPTY);
             Settings.EMPTY);
         IndexingSlowLog log2 = new IndexingSlowLog(index2Settings);
         IndexingSlowLog log2 = new IndexingSlowLog(index2Settings);
 
 
@@ -157,12 +159,13 @@ public class IndexingSlowLogTests extends ESTestCase {
         Mockito.when(result.getResultType()).thenReturn(Engine.Result.Type.SUCCESS);
         Mockito.when(result.getResultType()).thenReturn(Engine.Result.Type.SUCCESS);
 
 
         {
         {
-            // level set WARN, should not log
             Mockito.when(result.getTook()).thenReturn(11L);
             Mockito.when(result.getTook()).thenReturn(11L);
+
+            // threshold set on WARN(40nanos) where 11nanos does not breach, should not log
             log1.postIndex(ShardId.fromString("[index][123]"), index, result);
             log1.postIndex(ShardId.fromString("[index][123]"), index, result);
             assertNull(appender.getLastEventAndReset());
             assertNull(appender.getLastEventAndReset());
 
 
-            // level set TRACE, should log
+            // threshold set on TRACE(10nanos) and 11nanos breaches it, should log
             log2.postIndex(ShardId.fromString("[index][123]"), index, result);
             log2.postIndex(ShardId.fromString("[index][123]"), index, result);
             assertNotNull(appender.getLastEventAndReset());
             assertNotNull(appender.getLastEventAndReset());
         }
         }
@@ -171,14 +174,14 @@ public class IndexingSlowLogTests extends ESTestCase {
     public void testMultipleSlowLoggersUseSingleLog4jLogger() {
     public void testMultipleSlowLoggersUseSingleLog4jLogger() {
         LoggerContext context = (LoggerContext) LogManager.getContext(false);
         LoggerContext context = (LoggerContext) LogManager.getContext(false);
 
 
-        IndexSettings index1Settings = new IndexSettings(createIndexMetadata(SlowLogLevel.WARN, "index1", UUIDs.randomBase64UUID()),
+        IndexSettings index1Settings = new IndexSettings(createIndexMetadata("index1", settings(UUIDs.randomBase64UUID())),
             Settings.EMPTY);
             Settings.EMPTY);
         IndexingSlowLog log1 = new IndexingSlowLog(index1Settings);
         IndexingSlowLog log1 = new IndexingSlowLog(index1Settings);
 
 
         int numberOfLoggersBefore = context.getLoggers().size();
         int numberOfLoggersBefore = context.getLoggers().size();
 
 
 
 
-        IndexSettings index2Settings = new IndexSettings(createIndexMetadata(SlowLogLevel.TRACE, "index2", UUIDs.randomBase64UUID()),
+        IndexSettings index2Settings = new IndexSettings(createIndexMetadata("index2", settings(UUIDs.randomBase64UUID())),
             Settings.EMPTY);
             Settings.EMPTY);
         IndexingSlowLog log2 = new IndexingSlowLog(index2Settings);
         IndexingSlowLog log2 = new IndexingSlowLog(index2Settings);
         context = (LoggerContext) LogManager.getContext(false);
         context = (LoggerContext) LogManager.getContext(false);
@@ -187,16 +190,19 @@ public class IndexingSlowLogTests extends ESTestCase {
         assertThat(numberOfLoggersAfter, equalTo(numberOfLoggersBefore));
         assertThat(numberOfLoggersAfter, equalTo(numberOfLoggersBefore));
     }
     }
 
 
-    private IndexMetadata createIndexMetadata(SlowLogLevel level, String index, String uuid) {
-        return newIndexMeta(index, Settings.builder()
+    private IndexMetadata createIndexMetadata(String index, Settings build) {
+        return newIndexMeta(index, build);
+    }
+
+    private Settings settings(String uuid) {
+        return Settings.builder()
             .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT)
             .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT)
             .put(IndexMetadata.SETTING_INDEX_UUID, uuid)
             .put(IndexMetadata.SETTING_INDEX_UUID, uuid)
-            .put(IndexingSlowLog.INDEX_INDEXING_SLOWLOG_LEVEL_SETTING.getKey(), level)
             .put(IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_TRACE_SETTING.getKey(), "10nanos")
             .put(IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_TRACE_SETTING.getKey(), "10nanos")
             .put(IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_DEBUG_SETTING.getKey(), "20nanos")
             .put(IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_DEBUG_SETTING.getKey(), "20nanos")
             .put(IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_INFO_SETTING.getKey(), "30nanos")
             .put(IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_INFO_SETTING.getKey(), "30nanos")
             .put(IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_WARN_SETTING.getKey(), "40nanos")
             .put(IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_WARN_SETTING.getKey(), "40nanos")
-            .build());
+            .build();
     }
     }
 
 
     public void testSlowLogMessageHasJsonFields() throws IOException {
     public void testSlowLogMessageHasJsonFields() throws IOException {
@@ -315,72 +321,6 @@ public class IndexingSlowLogTests extends ESTestCase {
         assertTrue(log.isReformat());
         assertTrue(log.isReformat());
     }
     }
 
 
-    public void testLevelSetting() {
-        SlowLogLevel level = randomFrom(SlowLogLevel.values());
-        IndexMetadata metadata = newIndexMeta("index", Settings.builder()
-            .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT)
-            .put(IndexingSlowLog.INDEX_INDEXING_SLOWLOG_LEVEL_SETTING.getKey(), level)
-            .build());
-        IndexSettings settings = new IndexSettings(metadata, Settings.EMPTY);
-        IndexingSlowLog log = new IndexingSlowLog(settings);
-        assertEquals(level, log.getLevel());
-        level = randomFrom(SlowLogLevel.values());
-        settings.updateIndexMetadata(newIndexMeta("index",
-            Settings.builder().put(IndexingSlowLog.INDEX_INDEXING_SLOWLOG_LEVEL_SETTING.getKey(), level).build()));
-        assertEquals(level, log.getLevel());
-        level = randomFrom(SlowLogLevel.values());
-        settings.updateIndexMetadata(newIndexMeta("index",
-            Settings.builder().put(IndexingSlowLog.INDEX_INDEXING_SLOWLOG_LEVEL_SETTING.getKey(), level).build()));
-        assertEquals(level, log.getLevel());
-
-
-        settings.updateIndexMetadata(newIndexMeta("index",
-            Settings.builder().put(IndexingSlowLog.INDEX_INDEXING_SLOWLOG_LEVEL_SETTING.getKey(), level).build()));
-        assertEquals(level, log.getLevel());
-
-        settings.updateIndexMetadata(newIndexMeta("index", Settings.EMPTY));
-        assertEquals(SlowLogLevel.TRACE, log.getLevel());
-
-        metadata = newIndexMeta("index", Settings.builder()
-            .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT)
-            .build());
-        settings = new IndexSettings(metadata, Settings.EMPTY);
-        log = new IndexingSlowLog(settings);
-        assertTrue(log.isReformat());
-        try {
-            settings.updateIndexMetadata(newIndexMeta("index",
-                Settings.builder().put(IndexingSlowLog.INDEX_INDEXING_SLOWLOG_LEVEL_SETTING.getKey(), "NOT A LEVEL").build()));
-            fail();
-        } catch (IllegalArgumentException ex) {
-            final String expected = "illegal value can't update [index.indexing.slowlog.level] from [TRACE] to [NOT A LEVEL]";
-            assertThat(ex, hasToString(containsString(expected)));
-            assertNotNull(ex.getCause());
-            assertThat(ex.getCause(), instanceOf(IllegalArgumentException.class));
-            final IllegalArgumentException cause = (IllegalArgumentException) ex.getCause();
-            assertThat(cause, hasToString(containsString("No enum constant org.elasticsearch.index.SlowLogLevel.NOT A LEVEL")));
-        }
-        assertEquals(SlowLogLevel.TRACE, log.getLevel());
-
-        metadata = newIndexMeta("index", Settings.builder()
-            .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT)
-            .put(IndexMetadata.SETTING_INDEX_UUID, UUIDs.randomBase64UUID())
-            .put(IndexingSlowLog.INDEX_INDEXING_SLOWLOG_LEVEL_SETTING.getKey(), SlowLogLevel.DEBUG)
-            .build());
-        settings = new IndexSettings(metadata, Settings.EMPTY);
-        IndexingSlowLog debugLog = new IndexingSlowLog(settings);
-
-        metadata = newIndexMeta("index", Settings.builder()
-            .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT)
-            .put(IndexMetadata.SETTING_INDEX_UUID, UUIDs.randomBase64UUID())
-            .put(IndexingSlowLog.INDEX_INDEXING_SLOWLOG_LEVEL_SETTING.getKey(), SlowLogLevel.INFO)
-            .build());
-        settings = new IndexSettings(metadata, Settings.EMPTY);
-        IndexingSlowLog infoLog = new IndexingSlowLog(settings);
-
-        assertEquals(SlowLogLevel.DEBUG, debugLog.getLevel());
-        assertEquals(SlowLogLevel.INFO, infoLog.getLevel());
-    }
-
     public void testSetLevels() {
     public void testSetLevels() {
         IndexMetadata metadata = newIndexMeta("index", Settings.builder()
         IndexMetadata metadata = newIndexMeta("index", Settings.builder()
             .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT)
             .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT)

+ 48 - 108
server/src/test/java/org/elasticsearch/index/SearchSlowLogTests.java

@@ -19,6 +19,7 @@
 
 
 package org.elasticsearch.index;
 package org.elasticsearch.index;
 
 
+import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.core.LoggerContext;
 import org.apache.logging.log4j.core.LoggerContext;
@@ -106,84 +107,101 @@ public class SearchSlowLogTests extends ESSingleNodeTestCase {
         SearchContext ctx = searchContextWithSourceAndTask(createIndex("index"));
         SearchContext ctx = searchContextWithSourceAndTask(createIndex("index"));
         String uuid = UUIDs.randomBase64UUID();
         String uuid = UUIDs.randomBase64UUID();
         IndexSettings settings =
         IndexSettings settings =
-            new IndexSettings(createIndexMetadata(SlowLogLevel.WARN, "index", uuid), Settings.EMPTY);
+            new IndexSettings(createIndexMetadata("index", settings(uuid)), Settings.EMPTY);
         SearchSlowLog log = new SearchSlowLog(settings);
         SearchSlowLog log = new SearchSlowLog(settings);
 
 
+        // For this test, when level is not breached, the level below should be used.
         {
         {
-            //level set to WARN, should only log when WARN limit is breached
             log.onQueryPhase(ctx, 40L);
             log.onQueryPhase(ctx, 40L);
-            assertNull(appender.getLastEventAndReset());
+            assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.INFO));
             log.onQueryPhase(ctx, 41L);
             log.onQueryPhase(ctx, 41L);
-            assertNotNull(appender.getLastEventAndReset());
+            assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.WARN));
 
 
             log.onFetchPhase(ctx, 40L);
             log.onFetchPhase(ctx, 40L);
-            assertNull(appender.getLastEventAndReset());
+            assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.INFO));
             log.onFetchPhase(ctx, 41L);
             log.onFetchPhase(ctx, 41L);
-            assertNotNull(appender.getLastEventAndReset());
+            assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.WARN));
         }
         }
 
 
         {
         {
-            // level set INFO, should log when INFO level is breached
-            settings.updateIndexMetadata(createIndexMetadata(SlowLogLevel.INFO, "index", uuid));
             log.onQueryPhase(ctx, 30L);
             log.onQueryPhase(ctx, 30L);
-            assertNull(appender.getLastEventAndReset());
+            assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.DEBUG));
             log.onQueryPhase(ctx, 31L);
             log.onQueryPhase(ctx, 31L);
-            assertNotNull(appender.getLastEventAndReset());
+            assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.INFO));
 
 
             log.onFetchPhase(ctx, 30L);
             log.onFetchPhase(ctx, 30L);
-            assertNull(appender.getLastEventAndReset());
+            assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.DEBUG));
             log.onFetchPhase(ctx, 31L);
             log.onFetchPhase(ctx, 31L);
-            assertNotNull(appender.getLastEventAndReset());
+            assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.INFO));
         }
         }
 
 
         {
         {
-            // level set DEBUG, should log when DEBUG level is breached
-            settings.updateIndexMetadata(createIndexMetadata(SlowLogLevel.DEBUG, "index", uuid));
             log.onQueryPhase(ctx, 20L);
             log.onQueryPhase(ctx, 20L);
-            assertNull(appender.getLastEventAndReset());
+            assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.TRACE));
             log.onQueryPhase(ctx, 21L);
             log.onQueryPhase(ctx, 21L);
-            assertNotNull(appender.getLastEventAndReset());
+            assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.DEBUG));
 
 
             log.onFetchPhase(ctx, 20L);
             log.onFetchPhase(ctx, 20L);
-            assertNull(appender.getLastEventAndReset());
+            assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.TRACE));
             log.onFetchPhase(ctx, 21L);
             log.onFetchPhase(ctx, 21L);
-            assertNotNull(appender.getLastEventAndReset());
+            assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.DEBUG));
         }
         }
 
 
         {
         {
-            // level set TRACE, should log when TRACE level is breached
-            settings.updateIndexMetadata(createIndexMetadata(SlowLogLevel.TRACE, "index", uuid));
             log.onQueryPhase(ctx, 10L);
             log.onQueryPhase(ctx, 10L);
             assertNull(appender.getLastEventAndReset());
             assertNull(appender.getLastEventAndReset());
             log.onQueryPhase(ctx, 11L);
             log.onQueryPhase(ctx, 11L);
-            assertNotNull(appender.getLastEventAndReset());
+            assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.TRACE));
 
 
             log.onFetchPhase(ctx, 10L);
             log.onFetchPhase(ctx, 10L);
             assertNull(appender.getLastEventAndReset());
             assertNull(appender.getLastEventAndReset());
             log.onFetchPhase(ctx, 11L);
             log.onFetchPhase(ctx, 11L);
-            assertNotNull(appender.getLastEventAndReset());
+            assertThat(appender.getLastEventAndReset().getLevel(), equalTo(Level.TRACE));
         }
         }
     }
     }
 
 
+    private Settings.Builder settings(String uuid) {
+        return Settings.builder()
+            .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT)
+            .put(IndexMetadata.SETTING_INDEX_UUID, uuid)
+            .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_FETCH_TRACE_SETTING.getKey(), "10nanos")
+            .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_FETCH_DEBUG_SETTING.getKey(), "20nanos")
+            .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_FETCH_INFO_SETTING.getKey(), "30nanos")
+            .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_FETCH_WARN_SETTING.getKey(), "40nanos")
+
+            .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_TRACE_SETTING.getKey(), "10nanos")
+            .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_DEBUG_SETTING.getKey(), "20nanos")
+            .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_INFO_SETTING.getKey(), "30nanos")
+            .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_WARN_SETTING.getKey(), "40nanos");
+    }
+
     public void testTwoLoggersDifferentLevel() {
     public void testTwoLoggersDifferentLevel() {
         SearchContext ctx1 = searchContextWithSourceAndTask(createIndex("index-1"));
         SearchContext ctx1 = searchContextWithSourceAndTask(createIndex("index-1"));
         SearchContext ctx2 = searchContextWithSourceAndTask(createIndex("index-2"));
         SearchContext ctx2 = searchContextWithSourceAndTask(createIndex("index-2"));
         IndexSettings settings1 =
         IndexSettings settings1 =
-            new IndexSettings(createIndexMetadata(SlowLogLevel.WARN, "index-1", UUIDs.randomBase64UUID()), Settings.EMPTY);
+            new IndexSettings(createIndexMetadata("index-1", Settings.builder()
+                .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT)
+                .put(IndexMetadata.SETTING_INDEX_UUID, UUIDs.randomBase64UUID())
+                .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_FETCH_WARN_SETTING.getKey(), "40nanos")
+                .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_WARN_SETTING.getKey(), "40nanos")), Settings.EMPTY);
         SearchSlowLog log1 = new SearchSlowLog(settings1);
         SearchSlowLog log1 = new SearchSlowLog(settings1);
 
 
         IndexSettings settings2 =
         IndexSettings settings2 =
-            new IndexSettings(createIndexMetadata(SlowLogLevel.TRACE, "index-2", UUIDs.randomBase64UUID()), Settings.EMPTY);
+            new IndexSettings(createIndexMetadata("index-2", Settings.builder()
+                .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT)
+                .put(IndexMetadata.SETTING_INDEX_UUID, UUIDs.randomBase64UUID())
+                .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_FETCH_TRACE_SETTING.getKey(), "10nanos")
+                .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_TRACE_SETTING.getKey(), "10nanos")), Settings.EMPTY);
         SearchSlowLog log2 = new SearchSlowLog(settings2);
         SearchSlowLog log2 = new SearchSlowLog(settings2);
 
 
         {
         {
-            // level set WARN, should not log
+            // threshold set on WARN only, should not log
             log1.onQueryPhase(ctx1, 11L);
             log1.onQueryPhase(ctx1, 11L);
             assertNull(appender.getLastEventAndReset());
             assertNull(appender.getLastEventAndReset());
             log1.onFetchPhase(ctx1, 11L);
             log1.onFetchPhase(ctx1, 11L);
             assertNull(appender.getLastEventAndReset());
             assertNull(appender.getLastEventAndReset());
 
 
-            // level set TRACE, should log
+            // threshold set on TRACE, should log
             log2.onQueryPhase(ctx2, 11L);
             log2.onQueryPhase(ctx2, 11L);
             assertNotNull(appender.getLastEventAndReset());
             assertNotNull(appender.getLastEventAndReset());
             log2.onFetchPhase(ctx2, 11L);
             log2.onFetchPhase(ctx2, 11L);
@@ -196,34 +214,21 @@ public class SearchSlowLogTests extends ESSingleNodeTestCase {
 
 
         SearchContext ctx1 = searchContextWithSourceAndTask(createIndex("index-1"));
         SearchContext ctx1 = searchContextWithSourceAndTask(createIndex("index-1"));
         IndexSettings settings1 =
         IndexSettings settings1 =
-            new IndexSettings(createIndexMetadata(SlowLogLevel.WARN, "index-1", UUIDs.randomBase64UUID()), Settings.EMPTY);
+            new IndexSettings(createIndexMetadata("index-1", settings(UUIDs.randomBase64UUID())), Settings.EMPTY);
         SearchSlowLog log1 = new SearchSlowLog(settings1);
         SearchSlowLog log1 = new SearchSlowLog(settings1);
         int numberOfLoggersBefore = context.getLoggers().size();
         int numberOfLoggersBefore = context.getLoggers().size();
 
 
         SearchContext ctx2 = searchContextWithSourceAndTask(createIndex("index-2"));
         SearchContext ctx2 = searchContextWithSourceAndTask(createIndex("index-2"));
         IndexSettings settings2 =
         IndexSettings settings2 =
-            new IndexSettings(createIndexMetadata(SlowLogLevel.TRACE, "index-2", UUIDs.randomBase64UUID()), Settings.EMPTY);
+            new IndexSettings(createIndexMetadata("index-2", settings(UUIDs.randomBase64UUID())), Settings.EMPTY);
         SearchSlowLog log2 = new SearchSlowLog(settings2);
         SearchSlowLog log2 = new SearchSlowLog(settings2);
 
 
         int numberOfLoggersAfter = context.getLoggers().size();
         int numberOfLoggersAfter = context.getLoggers().size();
         assertThat(numberOfLoggersAfter, equalTo(numberOfLoggersBefore));
         assertThat(numberOfLoggersAfter, equalTo(numberOfLoggersBefore));
     }
     }
 
 
-    private IndexMetadata createIndexMetadata(SlowLogLevel level, String index, String uuid) {
-        return newIndexMeta(index, Settings.builder()
-            .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT)
-            .put(IndexMetadata.SETTING_INDEX_UUID, uuid)
-            .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_LEVEL.getKey(), level)
-            .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_FETCH_TRACE_SETTING.getKey(), "10nanos")
-            .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_FETCH_DEBUG_SETTING.getKey(), "20nanos")
-            .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_FETCH_INFO_SETTING.getKey(), "30nanos")
-            .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_FETCH_WARN_SETTING.getKey(), "40nanos")
-
-            .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_TRACE_SETTING.getKey(), "10nanos")
-            .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_DEBUG_SETTING.getKey(), "20nanos")
-            .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_INFO_SETTING.getKey(), "30nanos")
-            .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_WARN_SETTING.getKey(), "40nanos")
-            .build());
+    private IndexMetadata createIndexMetadata(String index, Settings.Builder put) {
+        return newIndexMeta(index, put.build());
     }
     }
 
 
     public void testSlowLogHasJsonFields() throws IOException {
     public void testSlowLogHasJsonFields() throws IOException {
@@ -272,71 +277,6 @@ public class SearchSlowLogTests extends ESSingleNodeTestCase {
         assertThat(p.get("id"), equalTo("my_id"));
         assertThat(p.get("id"), equalTo("my_id"));
     }
     }
 
 
-    public void testLevelSetting() {
-        SlowLogLevel level = randomFrom(SlowLogLevel.values());
-        IndexMetadata metadata = newIndexMeta("index", Settings.builder()
-            .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT)
-            .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_LEVEL.getKey(), level)
-            .build());
-        IndexSettings settings = new IndexSettings(metadata, Settings.EMPTY);
-        SearchSlowLog log = new SearchSlowLog(settings);
-        assertEquals(level, log.getLevel());
-        level = randomFrom(SlowLogLevel.values());
-        settings.updateIndexMetadata(newIndexMeta("index",
-            Settings.builder().put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_LEVEL.getKey(), level).build()));
-        assertEquals(level, log.getLevel());
-        level = randomFrom(SlowLogLevel.values());
-        settings.updateIndexMetadata(newIndexMeta("index",
-            Settings.builder().put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_LEVEL.getKey(), level).build()));
-        assertEquals(level, log.getLevel());
-
-
-        settings.updateIndexMetadata(newIndexMeta("index",
-            Settings.builder().put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_LEVEL.getKey(), level).build()));
-        assertEquals(level, log.getLevel());
-
-        settings.updateIndexMetadata(newIndexMeta("index", Settings.EMPTY));
-        assertEquals(SlowLogLevel.TRACE, log.getLevel());
-
-        metadata = newIndexMeta("index", Settings.builder()
-            .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT)
-            .build());
-        settings = new IndexSettings(metadata, Settings.EMPTY);
-        log = new SearchSlowLog(settings);
-        try {
-            settings.updateIndexMetadata(newIndexMeta("index",
-                Settings.builder().put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_LEVEL.getKey(), "NOT A LEVEL").build()));
-            fail();
-        } catch (IllegalArgumentException ex) {
-            final String expected = "illegal value can't update [index.search.slowlog.level] from [TRACE] to [NOT A LEVEL]";
-            assertThat(ex, hasToString(containsString(expected)));
-            assertNotNull(ex.getCause());
-            assertThat(ex.getCause(), instanceOf(IllegalArgumentException.class));
-            final IllegalArgumentException cause = (IllegalArgumentException) ex.getCause();
-            assertThat(cause, hasToString(containsString("No enum constant org.elasticsearch.index.SlowLogLevel.NOT A LEVEL")));
-        }
-        assertEquals(SlowLogLevel.TRACE, log.getLevel());
-
-        metadata = newIndexMeta("index", Settings.builder()
-            .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT)
-            .put(IndexMetadata.SETTING_INDEX_UUID, UUIDs.randomBase64UUID())
-            .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_LEVEL.getKey(), SlowLogLevel.DEBUG)
-            .build());
-        settings = new IndexSettings(metadata, Settings.EMPTY);
-        SearchSlowLog debugLog = new SearchSlowLog(settings);
-
-        metadata = newIndexMeta("index", Settings.builder()
-            .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT)
-            .put(IndexMetadata.SETTING_INDEX_UUID, UUIDs.randomBase64UUID())
-            .put(SearchSlowLog.INDEX_SEARCH_SLOWLOG_LEVEL.getKey(), SlowLogLevel.INFO)
-            .build());
-        settings = new IndexSettings(metadata, Settings.EMPTY);
-        SearchSlowLog infoLog = new SearchSlowLog(settings);
-
-        assertEquals(SlowLogLevel.DEBUG, debugLog.getLevel());
-        assertEquals(SlowLogLevel.INFO, infoLog.getLevel());
-    }
-
     public void testSetQueryLevels() {
     public void testSetQueryLevels() {
         IndexMetadata metadata = newIndexMeta("index", Settings.builder()
         IndexMetadata metadata = newIndexMeta("index", Settings.builder()
             .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT)
             .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT)

+ 0 - 57
server/src/test/java/org/elasticsearch/index/SlowLogLevelTests.java

@@ -1,57 +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.index;
-
-import org.elasticsearch.test.ESTestCase;
-
-
-public class SlowLogLevelTests extends ESTestCase {
-
-    public void testTracePrecedence() {
-        assertTrue(SlowLogLevel.TRACE.isLevelEnabledFor(SlowLogLevel.TRACE));
-        assertTrue(SlowLogLevel.TRACE.isLevelEnabledFor(SlowLogLevel.DEBUG));
-        assertTrue(SlowLogLevel.TRACE.isLevelEnabledFor(SlowLogLevel.INFO));
-        assertTrue(SlowLogLevel.TRACE.isLevelEnabledFor(SlowLogLevel.WARN));
-    }
-
-    public void testDebugPrecedence() {
-        assertFalse(SlowLogLevel.DEBUG.isLevelEnabledFor(SlowLogLevel.TRACE));
-
-        assertTrue(SlowLogLevel.DEBUG.isLevelEnabledFor(SlowLogLevel.DEBUG));
-        assertTrue(SlowLogLevel.DEBUG.isLevelEnabledFor(SlowLogLevel.INFO));
-        assertTrue(SlowLogLevel.DEBUG.isLevelEnabledFor(SlowLogLevel.WARN));
-    }
-
-    public void testInfoPrecedence() {
-        assertFalse(SlowLogLevel.INFO.isLevelEnabledFor(SlowLogLevel.TRACE));
-        assertFalse(SlowLogLevel.INFO.isLevelEnabledFor(SlowLogLevel.DEBUG));
-
-        assertTrue(SlowLogLevel.INFO.isLevelEnabledFor(SlowLogLevel.INFO));
-        assertTrue(SlowLogLevel.INFO.isLevelEnabledFor(SlowLogLevel.WARN));
-    }
-
-    public void testWarnPrecedence() {
-        assertFalse(SlowLogLevel.WARN.isLevelEnabledFor(SlowLogLevel.TRACE));
-        assertFalse(SlowLogLevel.WARN.isLevelEnabledFor(SlowLogLevel.DEBUG));
-        assertFalse(SlowLogLevel.WARN.isLevelEnabledFor(SlowLogLevel.INFO));
-
-        assertTrue(SlowLogLevel.WARN.isLevelEnabledFor(SlowLogLevel.WARN));
-    }
-}

+ 0 - 2
x-pack/plugin/ccr/src/main/java/org/elasticsearch/xpack/ccr/action/TransportResumeFollowAction.java

@@ -412,12 +412,10 @@ public class TransportResumeFollowAction extends TransportMasterNodeAction<Resum
             SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_DEBUG_SETTING,
             SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_DEBUG_SETTING,
             SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_INFO_SETTING,
             SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_INFO_SETTING,
             SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_TRACE_SETTING,
             SearchSlowLog.INDEX_SEARCH_SLOWLOG_THRESHOLD_QUERY_TRACE_SETTING,
-            SearchSlowLog.INDEX_SEARCH_SLOWLOG_LEVEL,
             IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_WARN_SETTING,
             IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_WARN_SETTING,
             IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_DEBUG_SETTING,
             IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_DEBUG_SETTING,
             IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_INFO_SETTING,
             IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_INFO_SETTING,
             IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_TRACE_SETTING,
             IndexingSlowLog.INDEX_INDEXING_SLOWLOG_THRESHOLD_INDEX_TRACE_SETTING,
-            IndexingSlowLog.INDEX_INDEXING_SLOWLOG_LEVEL_SETTING,
             IndexingSlowLog.INDEX_INDEXING_SLOWLOG_REFORMAT_SETTING,
             IndexingSlowLog.INDEX_INDEXING_SLOWLOG_REFORMAT_SETTING,
             IndexingSlowLog.INDEX_INDEXING_SLOWLOG_MAX_SOURCE_CHARS_TO_LOG_SETTING,
             IndexingSlowLog.INDEX_INDEXING_SLOWLOG_MAX_SOURCE_CHARS_TO_LOG_SETTING,
             MergePolicyConfig.INDEX_COMPOUND_FORMAT_SETTING,
             MergePolicyConfig.INDEX_COMPOUND_FORMAT_SETTING,