You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by gg...@apache.org on 2022/01/09 20:59:03 UTC

[logging-log4j2] branch master updated (986fdc1 -> 877ec99)

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

ggregory pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git.


    from 986fdc1  Javadoc. Format tweaks. Use NIO. Drop single use local.
     new feb9a7d  Sort methods.
     new 877ec99  Add org.apache.logging.log4j.spi.LoggerContext.getLoggerRegistry().

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../logging/log4j/simple/SimpleLoggerTest.java     |  3 +--
 .../java/org/apache/logging/log4j/LogManager.java  | 26 +++++++++++-----------
 .../logging/log4j/simple/SimpleLoggerContext.java  | 25 ++++++++++++++++-----
 .../log4j/simple/SimpleLoggerContextFactory.java   | 18 ++++++++-------
 .../apache/logging/log4j/spi/LoggerContext.java    | 12 ++++++++++
 .../log4j/core/config/TestConfiguratorError.java   |  2 +-
 .../apache/logging/log4j/core/LoggerContext.java   | 10 +++++++++
 7 files changed, 66 insertions(+), 30 deletions(-)

[logging-log4j2] 02/02: Add org.apache.logging.log4j.spi.LoggerContext.getLoggerRegistry().

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit 877ec99b823404aa549d902fb49fdeded445e77a
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Sun Jan 9 14:57:43 2022 -0500

    Add org.apache.logging.log4j.spi.LoggerContext.getLoggerRegistry().
    
    - Add org.apache.logging.log4j.core.LoggerContext.getLoggerRegistry()
    - Add org.apache.logging.log4j.simple.SimpleLoggerContext.getLoggerRegistry().
    - Move and make final SimpleLoggerContext singleton declaration from
    SimpleLoggerContextFactory to SimpleLoggerContext.
    - Add and use singleton SimpleLoggerContextFactory (stateless).
    - Split commit 1/2 for cherry-picking to master.
    
    Conflicts:
    	log4j-api/src/main/java/org/apache/logging/log4j/simple/SimpleLoggerContextFactory.java
---
 .../logging/log4j/simple/SimpleLoggerTest.java     |  3 +--
 .../java/org/apache/logging/log4j/LogManager.java  | 26 +++++++++++-----------
 .../logging/log4j/simple/SimpleLoggerContext.java  | 15 ++++++++++++-
 .../log4j/simple/SimpleLoggerContextFactory.java   | 18 ++++++++-------
 .../apache/logging/log4j/spi/LoggerContext.java    | 12 ++++++++++
 .../log4j/core/config/TestConfiguratorError.java   |  2 +-
 .../apache/logging/log4j/core/LoggerContext.java   | 10 +++++++++
 7 files changed, 61 insertions(+), 25 deletions(-)

diff --git a/log4j-api-test/src/test/java/org/apache/logging/log4j/simple/SimpleLoggerTest.java b/log4j-api-test/src/test/java/org/apache/logging/log4j/simple/SimpleLoggerTest.java
index 7e5bdbc..4d26e7e 100644
--- a/log4j-api-test/src/test/java/org/apache/logging/log4j/simple/SimpleLoggerTest.java
+++ b/log4j-api-test/src/test/java/org/apache/logging/log4j/simple/SimpleLoggerTest.java
@@ -30,8 +30,7 @@ import org.junit.jupiter.api.parallel.Resources;
 public class SimpleLoggerTest {
 
     @RegisterExtension
-    public static final LoggerContextFactoryExtension EXTENSION =
-            new LoggerContextFactoryExtension(new SimpleLoggerContextFactory());
+    public static final LoggerContextFactoryExtension EXTENSION = new LoggerContextFactoryExtension(SimpleLoggerContextFactory.INSTANCE);
 
     private final Logger logger = LogManager.getLogger("TestError");
 
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/LogManager.java b/log4j-api/src/main/java/org/apache/logging/log4j/LogManager.java
index a3ee536..a67dcbd 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/LogManager.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/LogManager.java
@@ -54,7 +54,7 @@ public class LogManager {
     public static final String FACTORY_PROPERTY_NAME = "log4j2.loggerContextFactory";
 
     /**
-     * The name of the root Logger.
+     * The name of the root Logger is {@value #ROOT_LOGGER_NAME}.
      */
     public static final String ROOT_LOGGER_NAME = Strings.EMPTY;
 
@@ -103,7 +103,7 @@ public class LogManager {
                 if (factories.isEmpty()) {
                     LOGGER.error("Log4j2 could not find a logging implementation. "
                             + "Please add log4j-core to the classpath. Using SimpleLogger to log to the console...");
-                    factory = new SimpleLoggerContextFactory();
+                    factory = SimpleLoggerContextFactory.INSTANCE;
                 } else if (factories.size() == 1) {
                     factory = factories.get(factories.lastKey());
                 } else {
@@ -120,7 +120,7 @@ public class LogManager {
             } else {
                 LOGGER.error("Log4j2 could not find a logging implementation. "
                         + "Please add log4j-core to the classpath. Using SimpleLogger to log to the console...");
-                factory = new SimpleLoggerContextFactory();
+                factory = SimpleLoggerContextFactory.INSTANCE;
             }
             LogManagerStatus.setInitialized(true);
         }
@@ -157,7 +157,7 @@ public class LogManager {
             return factory.getContext(FQCN, null, null, true);
         } catch (final IllegalStateException ex) {
             LOGGER.warn(ex.getMessage() + " Using SimpleLogger");
-            return new SimpleLoggerContextFactory().getContext(FQCN, null, null, true);
+            return SimpleLoggerContextFactory.INSTANCE.getContext(FQCN, null, null, true);
         }
     }
 
@@ -176,7 +176,7 @@ public class LogManager {
             return factory.getContext(FQCN, null, null, currentContext, null, null);
         } catch (final IllegalStateException ex) {
             LOGGER.warn(ex.getMessage() + " Using SimpleLogger");
-            return new SimpleLoggerContextFactory().getContext(FQCN, null, null, currentContext, null, null);
+            return SimpleLoggerContextFactory.INSTANCE.getContext(FQCN, null, null, currentContext, null, null);
         }
     }
 
@@ -196,7 +196,7 @@ public class LogManager {
             return factory.getContext(FQCN, loader, null, currentContext);
         } catch (final IllegalStateException ex) {
             LOGGER.warn(ex.getMessage() + " Using SimpleLogger");
-            return new SimpleLoggerContextFactory().getContext(FQCN, loader, null, currentContext);
+            return SimpleLoggerContextFactory.INSTANCE.getContext(FQCN, loader, null, currentContext);
         }
     }
 
@@ -218,7 +218,7 @@ public class LogManager {
             return factory.getContext(FQCN, loader, externalContext, currentContext);
         } catch (final IllegalStateException ex) {
             LOGGER.warn(ex.getMessage() + " Using SimpleLogger");
-            return new SimpleLoggerContextFactory().getContext(FQCN, loader, externalContext, currentContext);
+            return SimpleLoggerContextFactory.INSTANCE.getContext(FQCN, loader, externalContext, currentContext);
         }
     }
 
@@ -240,7 +240,7 @@ public class LogManager {
             return factory.getContext(FQCN, loader, null, currentContext, configLocation, null);
         } catch (final IllegalStateException ex) {
             LOGGER.warn(ex.getMessage() + " Using SimpleLogger");
-            return new SimpleLoggerContextFactory().getContext(FQCN, loader, null, currentContext, configLocation,
+            return SimpleLoggerContextFactory.INSTANCE.getContext(FQCN, loader, null, currentContext, configLocation,
                     null);
         }
     }
@@ -264,7 +264,7 @@ public class LogManager {
             return factory.getContext(FQCN, loader, externalContext, currentContext, configLocation, null);
         } catch (final IllegalStateException ex) {
             LOGGER.warn(ex.getMessage() + " Using SimpleLogger");
-            return new SimpleLoggerContextFactory().getContext(FQCN, loader, externalContext, currentContext,
+            return SimpleLoggerContextFactory.INSTANCE.getContext(FQCN, loader, externalContext, currentContext,
                     configLocation, null);
         }
     }
@@ -289,7 +289,7 @@ public class LogManager {
             return factory.getContext(FQCN, loader, externalContext, currentContext, configLocation, name);
         } catch (final IllegalStateException ex) {
             LOGGER.warn(ex.getMessage() + " Using SimpleLogger");
-            return new SimpleLoggerContextFactory().getContext(FQCN, loader, externalContext, currentContext,
+            return SimpleLoggerContextFactory.INSTANCE.getContext(FQCN, loader, externalContext, currentContext,
                     configLocation, name);
         }
     }
@@ -309,7 +309,7 @@ public class LogManager {
             return factory.getContext(fqcn, null, null, currentContext);
         } catch (final IllegalStateException ex) {
             LOGGER.warn(ex.getMessage() + " Using SimpleLogger");
-            return new SimpleLoggerContextFactory().getContext(fqcn, null, null, currentContext);
+            return SimpleLoggerContextFactory.INSTANCE.getContext(fqcn, null, null, currentContext);
         }
     }
 
@@ -331,7 +331,7 @@ public class LogManager {
             return factory.getContext(fqcn, loader, null, currentContext);
         } catch (final IllegalStateException ex) {
             LOGGER.warn(ex.getMessage() + " Using SimpleLogger");
-            return new SimpleLoggerContextFactory().getContext(fqcn, loader, null, currentContext);
+            return SimpleLoggerContextFactory.INSTANCE.getContext(fqcn, loader, null, currentContext);
         }
     }
 
@@ -356,7 +356,7 @@ public class LogManager {
             return factory.getContext(fqcn, loader, null, currentContext, configLocation, name);
         } catch (final IllegalStateException ex) {
             LOGGER.warn(ex.getMessage() + " Using SimpleLogger");
-            return new SimpleLoggerContextFactory().getContext(fqcn, loader, null, currentContext);
+            return SimpleLoggerContextFactory.INSTANCE.getContext(fqcn, loader, null, currentContext);
         }
     }
 
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/simple/SimpleLoggerContext.java b/log4j-api/src/main/java/org/apache/logging/log4j/simple/SimpleLoggerContext.java
index 109798c..ac14f37 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/simple/SimpleLoggerContext.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/simple/SimpleLoggerContext.java
@@ -19,7 +19,6 @@ package org.apache.logging.log4j.simple;
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.PrintStream;
-import java.nio.file.Files;
 
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.message.MessageFactory;
@@ -34,6 +33,9 @@ import org.apache.logging.log4j.util.PropertiesUtil;
  */
 public class SimpleLoggerContext implements LoggerContext {
 
+    /** Singleton instance. */
+    static final SimpleLoggerContext INSTANCE = new SimpleLoggerContext();
+    
     private static final String SYSTEM_OUT = "system.out";
 
     private static final String SYSTEM_ERR = "system.err";
@@ -126,6 +128,17 @@ public class SimpleLoggerContext implements LoggerContext {
         return loggerRegistry.getLogger(name, messageFactory);
     }
 
+    /**
+     * Gets the LoggerRegistry.
+     *
+     * @return the LoggerRegistry.
+     * @since 2.17.2
+     */
+    @Override
+    public LoggerRegistry<ExtendedLogger> getLoggerRegistry() {
+        return loggerRegistry;
+    }
+
     @Override
     public boolean hasLogger(final String name) {
         return false;
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/simple/SimpleLoggerContextFactory.java b/log4j-api/src/main/java/org/apache/logging/log4j/simple/SimpleLoggerContextFactory.java
index 1275bd7..bf9c577 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/simple/SimpleLoggerContextFactory.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/simple/SimpleLoggerContextFactory.java
@@ -22,22 +22,24 @@ import org.apache.logging.log4j.spi.LoggerContext;
 import org.apache.logging.log4j.spi.LoggerContextFactory;
 
 /**
- *
+ * Simple and stateless {@link LoggerContextFactory}.
  */
 public class SimpleLoggerContextFactory implements LoggerContextFactory {
 
-    private static final LoggerContext context = new SimpleLoggerContext();
+    /**
+     * Singleton instance.
+     */
+    public static final SimpleLoggerContextFactory INSTANCE = new SimpleLoggerContextFactory();
 
     @Override
-    public LoggerContext getContext(final String fqcn, final ClassLoader loader, final Object externalContext,
-            final boolean currentContext) {
-        return context;
+    public LoggerContext getContext(final String fqcn, final ClassLoader loader, final Object externalContext, final boolean currentContext) {
+        return SimpleLoggerContext.INSTANCE;
     }
 
     @Override
-    public LoggerContext getContext(final String fqcn, final ClassLoader loader, final Object externalContext,
-            final boolean currentContext, final URI configLocation, final String name) {
-        return context;
+    public LoggerContext getContext(final String fqcn, final ClassLoader loader, final Object externalContext, final boolean currentContext,
+        final URI configLocation, final String name) {
+        return SimpleLoggerContext.INSTANCE;
     }
 
     @Override
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/spi/LoggerContext.java b/log4j-api/src/main/java/org/apache/logging/log4j/spi/LoggerContext.java
index ff438e4..84837d5 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/spi/LoggerContext.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/spi/LoggerContext.java
@@ -16,6 +16,7 @@
  */
 package org.apache.logging.log4j.spi;
 
+import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.message.MessageFactory;
 
 /**
@@ -40,6 +41,7 @@ public interface LoggerContext {
         return getLogger(canonicalName != null ? canonicalName : cls.getName());
     }
 
+
     /**
      * Gets an ExtendedLogger using the fully qualified name of the Class as the Logger name.
      * @param cls The Class whose name should be used as the Logger name.
@@ -70,6 +72,16 @@ public interface LoggerContext {
     ExtendedLogger getLogger(String name, MessageFactory messageFactory);
 
     /**
+     * Gets the LoggerRegistry.
+     *
+     * @return the LoggerRegistry.
+     * @since 2.17.2
+     */
+    default LoggerRegistry<? extends Logger> getLoggerRegistry() {
+        return null;
+    }
+
+    /**
      * Gets an object by its name.
      * @param key The object's key.
      * @return The Object that is associated with the key, if any.
diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/TestConfiguratorError.java b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/TestConfiguratorError.java
index c7d67f7..b41392f 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/TestConfiguratorError.java
+++ b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/TestConfiguratorError.java
@@ -29,7 +29,7 @@ import static org.junit.jupiter.api.Assertions.assertNull;
 public class TestConfiguratorError {
 
     @RegisterExtension
-    static final LoggerContextFactoryExtension extension = new LoggerContextFactoryExtension(new SimpleLoggerContextFactory());
+    static final LoggerContextFactoryExtension EXTENSION = new LoggerContextFactoryExtension(SimpleLoggerContextFactory.INSTANCE);
 
     @Test
     public void testErrorNoClassLoader() throws Exception {
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java
index 4eabb21..3d1bc50 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java
@@ -528,6 +528,16 @@ public class LoggerContext extends AbstractLifeCycle
     }
 
     /**
+     * Gets the LoggerRegistry.
+     *
+     * @return the LoggerRegistry.
+     * @since 2.17.2
+     */
+    public LoggerRegistry<Logger> getLoggerRegistry() {
+        return loggerRegistry;
+    }
+
+    /**
      * Determines if the specified Logger exists.
      *
      * @param name The Logger name to search for.

[logging-log4j2] 01/02: Sort methods.

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit feb9a7db619737df04fe6692e621fc5a0c588411
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Sun Jan 9 10:52:33 2022 -0500

    Sort methods.
---
 .../apache/logging/log4j/simple/SimpleLoggerContext.java   | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/simple/SimpleLoggerContext.java b/log4j-api/src/main/java/org/apache/logging/log4j/simple/SimpleLoggerContext.java
index 8561318..109798c 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/simple/SimpleLoggerContext.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/simple/SimpleLoggerContext.java
@@ -103,6 +103,11 @@ public class SimpleLoggerContext implements LoggerContext {
     }
 
     @Override
+    public Object getExternalContext() {
+        return null;
+    }
+
+    @Override
     public ExtendedLogger getLogger(final String name) {
         return getLogger(name, null);
     }
@@ -127,18 +132,13 @@ public class SimpleLoggerContext implements LoggerContext {
     }
 
     @Override
-    public boolean hasLogger(final String name, final MessageFactory messageFactory) {
-        return false;
-    }
-
-    @Override
     public boolean hasLogger(final String name, final Class<? extends MessageFactory> messageFactoryClass) {
         return false;
     }
 
     @Override
-    public Object getExternalContext() {
-        return null;
+    public boolean hasLogger(final String name, final MessageFactory messageFactory) {
+        return false;
     }
 
 }