mirror of https://github.com/apache/lucene.git
SOLR-12987: Deprecated plugins are logged once and with log category org.apache.solr.DEPRECATED (#1927)
This commit is contained in:
parent
167c3050df
commit
9cadbf04b6
|
@ -291,6 +291,9 @@ Other Changes
|
|||
Also, Deprecate unused constants NULL_COLLAPSE, NULL_IGNORE, NULL_EXPAND, HINT_MULTI_DOCVALUES in collapse parser.
|
||||
(Guna Sekhar Dora Kovvuru, Munendra S N, Mike Drob)
|
||||
|
||||
* SOLR-12987: Deprecated plugins/features are now logged once and with log category org.apache.solr.DEPRECATED
|
||||
(David Smiley)
|
||||
|
||||
================== 8.6.2 ==================
|
||||
|
||||
Consult the LUCENE_CHANGES.txt file for additional, low level, changes in this release.
|
||||
|
|
|
@ -62,6 +62,7 @@ import org.apache.solr.common.SolrException;
|
|||
import org.apache.solr.common.cloud.SolrClassLoader;
|
||||
import org.apache.solr.handler.component.SearchComponent;
|
||||
import org.apache.solr.handler.component.ShardHandlerFactory;
|
||||
import org.apache.solr.logging.DeprecationLog;
|
||||
import org.apache.solr.pkg.PackageListeningClassLoader;
|
||||
import org.apache.solr.request.SolrRequestHandler;
|
||||
import org.apache.solr.response.QueryResponseWriter;
|
||||
|
@ -529,8 +530,8 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
|
|||
|
||||
// print warning if class is deprecated
|
||||
if (clazz.isAnnotationPresent(Deprecated.class)) {
|
||||
log.warn("Solr loaded a deprecated plugin/analysis class [{}]. Please consult documentation how to replace it accordingly.",
|
||||
cname);
|
||||
DeprecationLog.log(cname,
|
||||
"Solr loaded a deprecated plugin/analysis class [" + cname + "]. Please consult documentation how to replace it accordingly.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,50 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF 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.apache.solr.logging;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
* Utility to log a deprecation.
|
||||
*/
|
||||
public class DeprecationLog {
|
||||
|
||||
public static final String LOG_PREFIX = "org.apache.solr.DEPRECATED.";
|
||||
|
||||
// featureId -> message. Don't really need the message
|
||||
private static final Map<String, String> alreadyLogged = new ConcurrentHashMap<>();
|
||||
|
||||
/**
|
||||
* Logs a deprecation warning for the provided feature, but only the first time.
|
||||
* The logger name used is {@value LOG_PREFIX} + {@code featureId}.
|
||||
* Remember that logger names are disable-able via configuration if needed.
|
||||
* @return true if logged
|
||||
*/
|
||||
public static boolean log(String featureId, String message) {
|
||||
if (alreadyLogged.putIfAbsent(featureId, message) != null) {
|
||||
return false;
|
||||
}
|
||||
Logger log = LoggerFactory.getLogger(LOG_PREFIX + featureId);
|
||||
log.warn(message);
|
||||
return true;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue