You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rg...@apache.org on 2021/12/23 16:26:34 UTC

[logging-log4j1] 01/01: [maven-release-plugin] copy for tag v1_2_15_rc5

This is an automated email from the ASF dual-hosted git repository.

rgoers pushed a commit to annotated tag v1_2_15_rc5
in repository https://gitbox.apache.org/repos/asf/logging-log4j1.git

commit ac1d06673e8a59eb671f9064d08640b9cd2972d5
Author: Curtis William Arnold <ca...@apache.org>
AuthorDate: Fri Aug 24 22:50:09 2007 +0000

    [maven-release-plugin]  copy for tag v1_2_15_rc5
    
    git-svn-id: https://svn.apache.org/repos/asf/logging/log4j/tags/v1_2_15_rc5@569553 13f79535-47bb-0310-9956-ffa450edef68
---
 BUILD-INFO.txt                                     |  22 +--
 pom.xml                                            |  20 +-
 src/changes/changes.xml                            |   3 +-
 src/main/java/org/apache/log4j/LogManager.java     |  30 +--
 src/main/java/org/apache/log4j/spi/NOPLogger.java  | 212 +++++++++++++++++++++
 .../org/apache/log4j/spi/NOPLoggerRepository.java  | 131 +++++++++++++
 .../org/apache/log4j/xml/Log4jEntityResolver.java  |   4 +-
 7 files changed, 385 insertions(+), 37 deletions(-)

diff --git a/BUILD-INFO.txt b/BUILD-INFO.txt
index 45a411a..facccd4 100644
--- a/BUILD-INFO.txt
+++ b/BUILD-INFO.txt
@@ -30,9 +30,12 @@ Download Ubuntu-6.06-1 desktop from http://www.vmware.com/vmtn/appliances/direct
 
 Launch Ubuntu 6.06-1 in VMWare Player (user name and password are ubuntu)
 
-Launch Synaptics Package Manager (System > Administration > Synaptic Package Manager), select all available repositories (Settings > Repositories), press Reload button to update list of available packages.  Select the following packages for installation: Subversion, mingw32, sun-java6-jdk.  Press Apply to install.  Exit Synaptics.
+Launch Synaptics Package Manager (System > Administration > Synaptic Package Manager), 
+select all available repositories (Settings > Repositories), press Reload button 
+to update list of available packages.  Select the following packages for installation: 
+Subversion, mingw32, sun-java6-jdk.  Press Apply to install.  Exit Synaptics.
 
-Download Maven-2.0.6 from http://maven.apache.org
+Download Maven-2.0.7 from http://maven.apache.org
 Download JMX 1.2.1 Reference Implementation from 
    http://java.sun.com/products/JavaManagement/download.html
 Download JMS 1.1 from http://java.sun.com/products/jms/docs.html
@@ -43,7 +46,7 @@ Copy include/win32/jni_md.h from a Windows JDK to ~
 From a command prompt:
 
 $ export JAVA_HOME=/usr/lib/jvm/java-6-sun
-$ export PATH=$JAVA_HOME/bin:/home/ubuntu/maven-2.0.6/bin:$PATH
+$ export PATH=$JAVA_HOME/bin:/home/ubuntu/maven-2.0.7/bin:$PATH
 $ export JNI_WIN32_INCLUDE_DIR=/home/ubuntu
 $ svn co https://svn.apache.org/repos/asf/logging/log4j/tags/v1_2_15 log4j
 $ mvn install:install-file -DgroupId=com.sun.jdmk -DartifactId=jmxtools \
@@ -58,7 +61,7 @@ $ mvn site assembly:assembly
 
 If you intended to deploy jars to the repo or update the site,
 you need to copy your private keys for people.apache.org 
-over to ~/.ssh and update ~/maven-2.0.6/conf/settings.xml
+over to ~/.ssh and update ~/maven-2.0.7/conf/settings.xml
 to specify user name and key location.
 
     <server>
@@ -67,14 +70,9 @@ to specify user name and key location.
       <privateKey>/home/ubuntu/.ssh/id_rsa</privateKey>
       <passphrase></passphrase>
     </server>
-    <server>
-      <id>logging.site</id>
-      <username>USERNAME for people.apache.org</username>
-      <privateKey>/home/ubuntu/.ssh/id_rsa</privateKey>
-      <passphrase></passphrase>
-    </server>
 
-You should test your ssh connection to people.apache.org before
-attempting a deployment like:
+You should test your ssh connection to people.apache.org 
+and localhost before attempting a deployment like:
 
 $ ssh -l USERNAME people.apache.org
+$ ssh localhost
diff --git a/pom.xml b/pom.xml
index f3d787a..beb7e27 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,7 +21,7 @@
   <artifactId>log4j</artifactId>
   <packaging>jar</packaging>
   <name>Apache Log4j</name>
-  <version>1.2.15-SNAPSHOT</version>
+  <version>1.2.15</version>
   <properties>
     <currentVersion>1.2.15</currentVersion>
   </properties>  
@@ -68,9 +68,9 @@
     </license>
   </licenses>
   <scm>
-       <connection>scm:svn:http://svn.apache.org/repos/asf/logging/log4j/trunk</connection>
-       <developerConnection>scm:svn:https://svn.apache.org/repos/asf/logging/log4j/trunk</developerConnection>
-    <url>http://svn.apache.org/viewcvs.cgi/logging/log4j/trunk</url>
+       <connection>scm:svn:http://svn.apache.org/repos/asf/logging/log4j/tags/v1_2_15_rc5</connection>
+       <developerConnection>scm:svn:https://svn.apache.org/repos/asf/logging/log4j/tags/v1_2_15_rc5</developerConnection>
+    <url>http://svn.apache.org/viewcvs.cgi/logging/log4j/tags/v1_2_15_rc5</url>
   </scm>
   <organization>
     <name>Apache Software Foundation</name>
@@ -210,8 +210,8 @@
 			  <ant dir="tests" target="runAll">
 				<property name="junit.jar" location="${user.home}/.m2/repository/junit/junit/3.8.1/junit-3.8.1.jar" />
 				<property name="jakarta.oro.jar" location="${user.home}/.m2/repository/oro/oro/2.0.8/oro-2.0.8.jar" />
-                <property name="javamail.jar"  location="${user.home}/.m2/repository/javax/mail/mail/1.4/mail-1.4.jar"/>
-                <property name="activation.jar" location="${user.home}/.m2/repository/javax/activation/activation/1.1/activation-1.1.jar"/>
+                <property name="javamail.jar" location="${user.home}/.m2/repository/javax/mail/mail/1.4/mail-1.4.jar" />
+                <property name="activation.jar" location="${user.home}/.m2/repository/javax/activation/activation/1.1/activation-1.1.jar" />
                 <property name="log4j.jar" location="target/classes" />
 				<property name="project.lib.home" location="target" />
                     </ant> 
@@ -230,7 +230,7 @@
                     <taskdef name="replaceregexp" classname="org.apache.tools.ant.taskdefs.optional.ReplaceRegExp" />                
                    <replaceregexp file="target/site/source-repository.html" match="/tags/[^ ]*" replace="/trunk" flags="g" />
                 <replaceregexp match="-- Generated by (.*) on .*--" replace="-- Generated by \1 --" flags="g">
-					<fileset dir="target/site/apidocs" includes="**/*.html"/>
+					<fileset dir="target/site/apidocs" includes="**/*.html" />
 				</replaceregexp>
                 </tasks>
             </configuration>
@@ -243,7 +243,7 @@
             <id>post-site</id>
             <configuration>
                 <tasks>
-                   <ant target="post-site"/>
+                   <ant target="post-site" />
                 </tasks>
             </configuration>
             <goals>
@@ -255,7 +255,7 @@
             <id>site-deploy</id>
             <configuration>
                 <tasks>
-                   <ant target="site-deploy"/>
+                   <ant target="site-deploy" />
                 </tasks>
             </configuration>
             <goals>
@@ -443,7 +443,7 @@
       <plugin>
           <artifactId>maven-release-plugin</artifactId>
           <configuration>
-              <goals>site-deploy</goals>
+              <goals>deploy site-deploy assembly:attached</goals>
           </configuration>
       </plugin>
       <plugin>
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 0940e61..ccef084 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -22,7 +22,8 @@
   <body>
   
     <release version="1.2.15" date="2007-06-27" description="SyslogAppender enhancements, NTEventLogAppender and Maven build.">
-	   <action action="add" issue="43202">Add 'application' property support to SocketAppender (from 1.3)</action>
+        <action action="add" issue="40212">Switch to NOPLoggerRepository if application reloading nulls repositorySelector.</action>
+	    <action action="add" issue="43202">Add 'application' property support to SocketAppender (from 1.3)</action>
         <action action="fix" issue="43200">Log4JEntityResolver will return null if log4j.dtd can not be found on classpath.</action>
         <action action="fix" issue="37736">HierarchyEventListener.removeAppenderEvent never called.</action>
         <action action="fix" issue="37560">XMLLayout does not escape CDATA sections within NDC or throwables.</action>
diff --git a/src/main/java/org/apache/log4j/LogManager.java b/src/main/java/org/apache/log4j/LogManager.java
index 6c0ebfd..199d15f 100644
--- a/src/main/java/org/apache/log4j/LogManager.java
+++ b/src/main/java/org/apache/log4j/LogManager.java
@@ -22,6 +22,7 @@ import org.apache.log4j.spi.LoggerFactory;
 import org.apache.log4j.spi.RepositorySelector;
 import org.apache.log4j.spi.DefaultRepositorySelector;
 import org.apache.log4j.spi.RootLogger;
+import org.apache.log4j.spi.NOPLoggerRepository;
 import org.apache.log4j.helpers.Loader;
 import org.apache.log4j.helpers.OptionConverter;
 import org.apache.log4j.helpers.LogLog;
@@ -170,6 +171,11 @@ public class LogManager {
   static
   public
   LoggerRepository getLoggerRepository() {
+    if (repositorySelector == null) {
+        repositorySelector = new DefaultRepositorySelector(new NOPLoggerRepository());
+        guard = null;
+        LogLog.error("LogMananger.repositorySelector was null likely due to error in class reloading, using NOPLoggerRepository.");
+    }
     return repositorySelector.getLoggerRepository();
   }
 
@@ -180,7 +186,7 @@ public class LogManager {
   static 
   Logger getRootLogger() {
      // Delegate the actual manufacturing of the logger to the logger repository.
-    return repositorySelector.getLoggerRepository().getRootLogger();
+    return getLoggerRepository().getRootLogger();
   }
 
   /**
@@ -188,9 +194,9 @@ public class LogManager {
   */
   public
   static 
-  Logger getLogger(String name) {
+  Logger getLogger(final String name) {
      // Delegate the actual manufacturing of the logger to the logger repository.
-    return repositorySelector.getLoggerRepository().getLogger(name);
+    return getLoggerRepository().getLogger(name);
   }
 
  /**
@@ -198,9 +204,9 @@ public class LogManager {
   */
   public
   static 
-  Logger getLogger(Class clazz) {
+  Logger getLogger(final Class clazz) {
      // Delegate the actual manufacturing of the logger to the logger repository.
-    return repositorySelector.getLoggerRepository().getLogger(clazz.getName());
+    return getLoggerRepository().getLogger(clazz.getName());
   }
 
 
@@ -209,33 +215,33 @@ public class LogManager {
   */
   public
   static 
-  Logger getLogger(String name, LoggerFactory factory) {
+  Logger getLogger(final String name, final LoggerFactory factory) {
      // Delegate the actual manufacturing of the logger to the logger repository.
-    return repositorySelector.getLoggerRepository().getLogger(name, factory);
+    return getLoggerRepository().getLogger(name, factory);
   }  
 
   public
   static
-  Logger exists(String name) {
-    return repositorySelector.getLoggerRepository().exists(name);
+  Logger exists(final String name) {
+    return getLoggerRepository().exists(name);
   }
 
   public
   static
   Enumeration getCurrentLoggers() {
-    return repositorySelector.getLoggerRepository().getCurrentLoggers();
+    return getLoggerRepository().getCurrentLoggers();
   }
 
   public
   static
   void shutdown() {
-    repositorySelector.getLoggerRepository().shutdown();
+    getLoggerRepository().shutdown();
   }
 
   public
   static
   void resetConfiguration() {
-    repositorySelector.getLoggerRepository().resetConfiguration();
+    getLoggerRepository().resetConfiguration();
   }
 }
 
diff --git a/src/main/java/org/apache/log4j/spi/NOPLogger.java b/src/main/java/org/apache/log4j/spi/NOPLogger.java
new file mode 100644
index 0000000..38b1514
--- /dev/null
+++ b/src/main/java/org/apache/log4j/spi/NOPLogger.java
@@ -0,0 +1,212 @@
+/*
+ * 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.log4j.spi;
+
+import org.apache.log4j.Appender;
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
+import org.apache.log4j.Priority;
+
+import java.util.Enumeration;
+import java.util.ResourceBundle;
+import java.util.Vector;
+
+/**
+ * No-operation implementation of Logger used by NOPLoggerRepository.
+ * @since 1.2.15
+ */
+public final class NOPLogger extends Logger {
+    /**
+     * Create instance of Logger.
+     * @param repo repository, may not be null.
+     * @param name name, may not be null, use "root" for root logger.
+     */
+    public NOPLogger(NOPLoggerRepository repo, final String name) {
+        super(name);
+        this.repository = repo;
+        this.level = Level.OFF;
+        this.parent = this;
+    }
+
+    /** {@inheritDoc} */
+    public void addAppender(final Appender newAppender) {
+    }
+
+    /** {@inheritDoc} */
+    public void assertLog(final boolean assertion, final String msg) {
+    }
+
+
+    /** {@inheritDoc} */
+    public void callAppenders(final LoggingEvent event) {
+    }
+
+    /** {@inheritDoc} */
+    void closeNestedAppenders() {
+    }
+
+    /** {@inheritDoc} */
+    public void debug(final Object message) {
+    }
+
+
+    /** {@inheritDoc} */
+    public void debug(final Object message, final Throwable t) {
+    }
+
+    /** {@inheritDoc} */
+    public void error(final Object message) {
+    }
+
+    /** {@inheritDoc} */
+    public void error(final Object message, final Throwable t) {
+    }
+
+
+    /** {@inheritDoc} */
+    public void fatal(final Object message) {
+    }
+
+    /** {@inheritDoc} */
+    public void fatal(final Object message, final Throwable t) {
+    }
+
+
+    /** {@inheritDoc} */
+    public Enumeration getAllAppenders() {
+      return new Vector().elements();
+    }
+
+    /** {@inheritDoc} */
+    public Appender getAppender(final String name) {
+       return null;
+    }
+
+    /** {@inheritDoc} */
+    public Level getEffectiveLevel() {
+      return Level.OFF;
+    }
+
+    /** {@inheritDoc} */
+    public Priority getChainedPriority() {
+      return getEffectiveLevel();
+    }
+
+    /** {@inheritDoc} */
+    public ResourceBundle getResourceBundle() {
+      return null;
+    }
+
+
+    /** {@inheritDoc} */
+    public void info(final Object message) {
+    }
+
+    /** {@inheritDoc} */
+    public void info(final Object message, final Throwable t) {
+    }
+
+    /** {@inheritDoc} */
+    public boolean isAttached(Appender appender) {
+      return false;
+    }
+
+    /** {@inheritDoc} */
+    public boolean isDebugEnabled() {
+      return false;
+    }
+
+    /** {@inheritDoc} */
+    public boolean isEnabledFor(final Priority level) {
+      return false;
+    }
+
+    /** {@inheritDoc} */
+    public boolean isInfoEnabled() {
+      return false;
+    }
+
+
+    /** {@inheritDoc} */
+    public void l7dlog(final Priority priority, final String key, final Throwable t) {
+    }
+
+    /** {@inheritDoc} */
+    public void l7dlog(final Priority priority, final String key,  final Object[] params, final Throwable t) {
+    }
+
+    /** {@inheritDoc} */
+    public void log(final Priority priority, final Object message, final Throwable t) {
+    }
+
+    /** {@inheritDoc} */
+    public void log(final Priority priority, final Object message) {
+    }
+
+    /** {@inheritDoc} */
+    public void log(final String callerFQCN, final Priority level, final Object message, final Throwable t) {
+    }
+
+    /** {@inheritDoc} */
+    public void removeAllAppenders() {
+    }
+
+
+    /** {@inheritDoc} */
+    public void removeAppender(Appender appender) {
+    }
+
+    /** {@inheritDoc} */
+    public void removeAppender(final String name) {
+    }
+
+    /** {@inheritDoc} */
+    public void setLevel(final Level level) {
+    }
+
+
+    /** {@inheritDoc} */
+    public void setPriority(final Priority priority) {
+    }
+
+    /** {@inheritDoc} */
+    public void setResourceBundle(final ResourceBundle bundle) {
+    }
+
+    /** {@inheritDoc} */
+    public void warn(final Object message) {
+    }
+
+    /** {@inheritDoc} */
+    public void warn(final Object message, final Throwable t) {
+    }
+
+    /** {@inheritDoc} */
+    public void trace(Object message) {
+    }
+
+    /** {@inheritDoc} */
+    public void trace(Object message, Throwable t) {
+    }
+
+    /** {@inheritDoc} */
+    public boolean isTraceEnabled() {
+        return false;
+    }
+
+
+}
diff --git a/src/main/java/org/apache/log4j/spi/NOPLoggerRepository.java b/src/main/java/org/apache/log4j/spi/NOPLoggerRepository.java
new file mode 100644
index 0000000..ca92dbe
--- /dev/null
+++ b/src/main/java/org/apache/log4j/spi/NOPLoggerRepository.java
@@ -0,0 +1,131 @@
+/*
+ * 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.log4j.spi;
+
+import org.apache.log4j.Level;
+import org.apache.log4j.Category;
+import org.apache.log4j.Logger;
+import org.apache.log4j.Appender;
+
+import java.util.Enumeration;
+import java.util.Vector;
+
+/**
+ *  No-operation implementation of LoggerRepository which is used when
+ *  LogManager.repositorySelector is erroneously nulled during class reloading.
+ *  @since 1.2.15
+ */
+public final class NOPLoggerRepository implements LoggerRepository {
+    /**
+     * {@inheritDoc}
+    */
+    public void addHierarchyEventListener(final HierarchyEventListener listener) {
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean isDisabled(final int level) {
+        return true;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void setThreshold(final Level level) {
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void setThreshold(final String val) {
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void emitNoAppenderWarning(final Category cat) {
+    }
+
+    /**
+     * @{inheritDoc}
+     */
+    public Level getThreshold() {
+        return Level.OFF;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public Logger getLogger(final String name) {
+        return new NOPLogger(this, name);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public Logger getLogger(final String name, final LoggerFactory factory) {
+        return new NOPLogger(this, name);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public Logger getRootLogger() {
+        return new NOPLogger(this, "root");
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public Logger exists(final String name) {
+        return null;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void shutdown() {
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public Enumeration getCurrentLoggers() {
+        return new Vector().elements();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public Enumeration getCurrentCategories() {
+        return getCurrentLoggers();
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public  void fireAddAppenderEvent(Category logger, Appender appender) {
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void resetConfiguration() {
+    }
+}
diff --git a/src/main/java/org/apache/log4j/xml/Log4jEntityResolver.java b/src/main/java/org/apache/log4j/xml/Log4jEntityResolver.java
index 8ff2d61..03a801f 100644
--- a/src/main/java/org/apache/log4j/xml/Log4jEntityResolver.java
+++ b/src/main/java/org/apache/log4j/xml/Log4jEntityResolver.java
@@ -38,8 +38,8 @@ public class Log4jEntityResolver implements EntityResolver {
       Class clazz = getClass();
       InputStream in = clazz.getResourceAsStream("/org/apache/log4j/xml/log4j.dtd");
       if (in == null) {
-	    LogLog.error("Could not find [log4j.dtd]. Used [" + clazz.getClassLoader()
-		     + "] class loader in the search.");
+	    LogLog.warn("Could not find [log4j.dtd] using [" + clazz.getClassLoader()
+		     + "] class loader, parsed without DTD.");
         in = new ByteArrayInputStream(new byte[0]);
       }
 	  return new InputSource(in);