You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sj...@apache.org on 2026/04/21 15:38:31 UTC

(maven) branch maven-3.10.x updated: Optimize log level rendering in MavenSimpleLogger (#11969)

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

slawekjaranowski pushed a commit to branch maven-3.10.x
in repository https://gitbox.apache.org/repos/asf/maven.git


The following commit(s) were added to refs/heads/maven-3.10.x by this push:
     new 717f87fea7 Optimize log level rendering in MavenSimpleLogger (#11969)
717f87fea7 is described below

commit 717f87fea71d818fb22e2347d818b0d6d5386ab8
Author: Slawomir Jaranowski <s....@gmail.com>
AuthorDate: Tue Apr 21 17:38:25 2026 +0200

    Optimize log level rendering in MavenSimpleLogger (#11969)
    
    * Optimize log level rendering in MavenSimpleLogger
    
    What changed:
    - Cached rendered log level strings to improve performance.
    - Removed redundant calls to the builder for each log level.
    - Initialized rendered levels only once during the first call.
    
    Why:
    - Enhances efficiency by reducing object creation during logging.
    - Improves overall logging performance in Maven.
    
    * Remove redundant implementation of getLogger method in MavenSimpleLoggerFactory
---
 .../java/org/slf4j/simple/MavenSimpleLogger.java   | 26 +++++++++++++++++-----
 .../org/slf4j/simple/MavenSimpleLoggerFactory.java | 13 -----------
 2 files changed, 21 insertions(+), 18 deletions(-)

diff --git a/maven-slf4j-provider/src/main/java/org/slf4j/simple/MavenSimpleLogger.java b/maven-slf4j-provider/src/main/java/org/slf4j/simple/MavenSimpleLogger.java
index 83516f834d..b11568661e 100644
--- a/maven-slf4j-provider/src/main/java/org/slf4j/simple/MavenSimpleLogger.java
+++ b/maven-slf4j-provider/src/main/java/org/slf4j/simple/MavenSimpleLogger.java
@@ -29,24 +29,40 @@
  */
 public class MavenSimpleLogger extends SimpleLogger {
 
+    private String traceRenderedLevel;
+    private String debugRenderedLevel;
+    private String infoRenderedLevel;
+    private String warnRenderedLevel;
+    private String errorRenderedLevel;
+
     MavenSimpleLogger(String name) {
         super(name);
     }
 
     @Override
     protected String renderLevel(int level) {
+        // lazy initialization at first use
+        // cannot be done in constructor because ansi terminals are not configured yet
+        if (traceRenderedLevel == null) {
+            traceRenderedLevel = builder().trace("TRACE").build();
+            debugRenderedLevel = builder().debug("DEBUG").build();
+            infoRenderedLevel = builder().info("INFO").build();
+            warnRenderedLevel = builder().warning("WARNING").build();
+            errorRenderedLevel = builder().error("ERROR").build();
+        }
+
         switch (level) {
             case LOG_LEVEL_TRACE:
-                return builder().trace("TRACE").toString();
+                return traceRenderedLevel;
             case LOG_LEVEL_DEBUG:
-                return builder().debug("DEBUG").toString();
+                return debugRenderedLevel;
             case LOG_LEVEL_INFO:
-                return builder().info("INFO").toString();
+                return infoRenderedLevel;
             case LOG_LEVEL_WARN:
-                return builder().warning("WARNING").toString();
+                return warnRenderedLevel;
             case LOG_LEVEL_ERROR:
             default:
-                return builder().error("ERROR").toString();
+                return errorRenderedLevel;
         }
     }
 
diff --git a/maven-slf4j-provider/src/main/java/org/slf4j/simple/MavenSimpleLoggerFactory.java b/maven-slf4j-provider/src/main/java/org/slf4j/simple/MavenSimpleLoggerFactory.java
index a0ae41cff9..815cbf1788 100644
--- a/maven-slf4j-provider/src/main/java/org/slf4j/simple/MavenSimpleLoggerFactory.java
+++ b/maven-slf4j-provider/src/main/java/org/slf4j/simple/MavenSimpleLoggerFactory.java
@@ -24,19 +24,6 @@
  * MavenSimpleLoggerFactory
  */
 public class MavenSimpleLoggerFactory extends SimpleLoggerFactory {
-    /**
-     * Return an appropriate {@link MavenSimpleLogger} instance by name.
-     */
-    public Logger getLogger(String name) {
-        Logger simpleLogger = loggerMap.get(name);
-        if (simpleLogger != null) {
-            return simpleLogger;
-        } else {
-            Logger newInstance = new MavenSimpleLogger(name);
-            Logger oldInstance = loggerMap.putIfAbsent(name, newInstance);
-            return oldInstance == null ? newInstance : oldInstance;
-        }
-    }
 
     @Override
     protected Logger createLogger(String name) {