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 2019/06/23 02:54:46 UTC

[logging-log4j2] branch master updated: LOG4J2-2633 - Handle NoSuchElementException

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 87db0a4  LOG4J2-2633 - Handle NoSuchElementException
87db0a4 is described below

commit 87db0a429d85390a2157f47b209466e12fa21394
Author: Ralph Goers <rg...@apache.org>
AuthorDate: Sat Jun 22 19:54:19 2019 -0700

    LOG4J2-2633 - Handle NoSuchElementException
---
 .../org/apache/logging/log4j/util/StackLocatorUtil.java    | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/util/StackLocatorUtil.java b/log4j-api/src/main/java/org/apache/logging/log4j/util/StackLocatorUtil.java
index 56812fe..d4c0c64 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/util/StackLocatorUtil.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/StackLocatorUtil.java
@@ -16,6 +16,9 @@
  */
 package org.apache.logging.log4j.util;
 
+import org.apache.logging.log4j.status.StatusLogger;
+
+import java.util.NoSuchElementException;
 import java.util.Stack;
 
 /**
@@ -23,6 +26,7 @@ import java.util.Stack;
  */
 public final class StackLocatorUtil {
     private static StackLocator stackLocator = null;
+    private static volatile boolean errorLogged = false;
 
     static {
         stackLocator = StackLocator.getInstance();
@@ -68,6 +72,14 @@ public final class StackLocatorUtil {
     }
 
     public static StackTraceElement calcLocation(final String fqcnOfLogger) {
-        return stackLocator.calcLocation(fqcnOfLogger);
+        try {
+            return stackLocator.calcLocation(fqcnOfLogger);
+        } catch (NoSuchElementException ex) {
+            if (!errorLogged) {
+                errorLogged = true;
+                StatusLogger.getLogger().warn("Unable to locate stack trace element for {}", fqcnOfLogger, ex);
+            }
+            return null;
+        }
     }
 }