[ https://issues.apache.org/jira/browse/LOG4J2-3177?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17434920#comment-17434920 ]
Richard Eckart de Castilho commented on LOG4J2-3177: ---------------------------------------------------- Trying to build on the command line. I have set up a toolchains file - using Java 11 for the Java 9 toolchain because I don't find a working Java 9 JDK for macOS (Zulu doesn't seem to have one and the AdoptOpenJDK one is reported by the OS as being broken)... anyway... it builds a bit but then: {noformat} [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:testCompile (default-testCompile) on project log4j-api: Compilation failure [ERROR] .../git/logging-log4j2/log4j-api/src/test/java/org/apache/logging/log4j/util/StackLocatorUtilTest.java:[25,18] error: cannot find symbol [ERROR] symbol: class Reflection [ERROR] location: package sun.reflect {noformat} ... > Log4jLogger swallows stack trace if throwable is only present in parameter > list and not given explicitly > -------------------------------------------------------------------------------------------------------- > > Key: LOG4J2-3177 > URL: https://issues.apache.org/jira/browse/LOG4J2-3177 > Project: Log4j 2 > Issue Type: Bug > Components: SLF4J Bridge > Affects Versions: 2.14.1 > Reporter: Richard Eckart de Castilho > Priority: Major > Attachments: Screenshot 2021-10-25 at 07.36.19.png, Screenshot > 2021-10-25 at 07.39.17.png > > > I have the feeling that this code below from the Log4jLogger class has a bug. > I believe the intention of the code is to use the throwable extracted from > the message params of the parametrized message if the {{throwable}} parameter > was not explicitly provided to the method. But to accomplish this, the > condition would need to be {{if (throwable == null)}} in the code snippet > below. This seems to cause exception stack traces to be swallowed if the > throwable is only provided in the params array but not explicitly in the > {{throwable}} argument. > {code} > public void log(final Marker marker, final String fqcn, final int level, > final String message, final Object[] params, Throwable throwable) { > ... > msg = new ParameterizedMessage(message, params, throwable); > if (throwable != null) { // I am pretty sure the idea was to use a "==" > here and not a "!=" > throwable = msg.getThrowable(); > } > ... > } > {code} > Source (permalink master at reporting time): > https://github.com/apache/logging-log4j2/blob/1a62186816bdd05ba420e01f6ee5a2b139a41816/log4j-slf4j-impl/src/main/java/org/apache/logging/slf4j/Log4jLogger.java#L371-L374 > Source (latest master): > https://github.com/apache/logging-log4j2/blob/master/log4j-slf4j-impl/src/main/java/org/apache/logging/slf4j/Log4jLogger.java#L371-L374 > I hit the issue in Log4J 2.10.0 but checking the GitHub repo, it appears that > this code is still present on the current master branch (see permalink above). -- This message was sent by Atlassian Jira (v8.3.4#803005)