You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2015/02/12 10:47:14 UTC
svn commit: r1659184 -
/tomcat/trunk/java/org/apache/catalina/startup/Tomcat.java
Author: markt
Date: Thu Feb 12 09:47:14 2015
New Revision: 1659184
URL: http://svn.apache.org/r1659184
Log:
Fix FindBugs warnings re possible Logger configuration loss
Modified:
tomcat/trunk/java/org/apache/catalina/startup/Tomcat.java
Modified: tomcat/trunk/java/org/apache/catalina/startup/Tomcat.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/Tomcat.java?rev=1659184&r1=1659183&r2=1659184&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/startup/Tomcat.java (original)
+++ tomcat/trunk/java/org/apache/catalina/startup/Tomcat.java Thu Feb 12 09:47:14 2015
@@ -24,8 +24,10 @@ import java.net.URL;
import java.security.Principal;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.Stack;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
@@ -124,6 +126,13 @@ import org.apache.tomcat.util.descriptor
* @author Costin Manolache
*/
public class Tomcat {
+ // Some logging implementations use weak references for loggers so there is
+ // the possibility that logging configuration could be lost if GC runs just
+ // after Loggers are configured but before they are used. The purpose of
+ // this Sety is to retain strong references to explicitly configured loggers
+ // so that configuration is not lost.
+ private final Set<Logger> pinnedLoggers = new HashSet<>();
+
// Single engine, service, server, connector - few cases need more,
// they can use server.xml
protected Server server;
@@ -663,16 +672,20 @@ public class Tomcat {
*/
public void setSilent(boolean silent) {
for (String s : silences) {
+ Logger logger = Logger.getLogger(s);
+ pinnedLoggers.add(logger);
if (silent) {
- Logger.getLogger(s).setLevel(Level.WARNING);
+ logger.setLevel(Level.WARNING);
} else {
- Logger.getLogger(s).setLevel(Level.INFO);
+ logger.setLevel(Level.INFO);
}
}
}
private void silence(Host host, String ctx) {
- Logger.getLogger(getLoggerName(host, ctx)).setLevel(Level.WARNING);
+ Logger logger = Logger.getLogger(getLoggerName(host, ctx));
+ pinnedLoggers.add(logger);
+ logger.setLevel(Level.WARNING);
}
private String getLoggerName(Host host, String ctx) {
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org