[ https://issues.apache.org/jira/browse/LOG4J2-2633?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16870418#comment-16870418 ]
Ralph Goers commented on LOG4J2-2633: ------------------------------------- I have applied a patch that will log a warning when calcLocation encounters a NoSuchElementException. Please make sure you have status="WARN" set in your log4j configuration and provide the resulting log message when it occurs. The message should only be logged once during the execution of the application although it is possible the exception might happen more than that. > JSONLayout can't find Log4jLogEvent["source"] in Java 11 > -------------------------------------------------------- > > Key: LOG4J2-2633 > URL: https://issues.apache.org/jira/browse/LOG4J2-2633 > Project: Log4j 2 > Issue Type: Bug > Components: Layouts > Affects Versions: 2.11.2 > Environment: {code:java} > java -version > openjdk version "11.0.2" 2019-01-15 > OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.2+9) > OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.2+9, mixed mode){code} > * Log4j version - 2.11.2 > * slf4j version - 1.7.26 > * disruptor version - 3.4.2 > * Log4jContextSelector=AsyncLoggerContextSelector > > Reporter: Ran Leibman > Priority: Major > > While migrating my service from Java 8 to Java 11 I noticed that most (if not > all) of my logs are missing. > While looking the the process stderr stream I saw the following message: > > {code:java} > ERROR StatusLogger com.fasterxml.jackson.databind.JsonMappingException: No > value present (through reference chain: > org.apache.logging.log4j.core.impl.Log4jLogEvent["source"]) > com.fasterxml.jackson.databind.JsonMappingException: No value present > (through reference chain: > org.apache.logging.log4j.core.impl.Log4jLogEvent["source"]) > at > com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:394) > at > com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:353) > at > com.fasterxml.jackson.databind.ser.std.StdSerializer.wrapAndThrow(StdSerializer.java:316) > at > com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFieldsFiltered(BeanSerializerBase.java:779) > at > com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:153) > at > com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480) > at > com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:319) > at > com.fasterxml.jackson.databind.ObjectWriter$Prefetch.serialize(ObjectWriter.java:1396) > at > com.fasterxml.jackson.databind.ObjectWriter._configAndWriteValue(ObjectWriter.java:1120) > at > com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:966) > at > org.apache.logging.log4j.core.layout.AbstractJacksonLayout.toSerializable(AbstractJacksonLayout.java:304) > at > org.apache.logging.log4j.core.layout.JsonLayout.toSerializable(JsonLayout.java:291) > at > org.apache.logging.log4j.core.layout.AbstractJacksonLayout.toSerializable(AbstractJacksonLayout.java:255) > at > org.apache.logging.log4j.core.layout.JsonLayout.toSerializable(JsonLayout.java:68) > at > org.apache.logging.log4j.core.layout.AbstractJacksonLayout.toSerializable(AbstractJacksonLayout.java:44) > at > org.apache.logging.log4j.core.layout.AbstractStringLayout.toByteArray(AbstractStringLayout.java:304) > at com.moblica.log4j.ScribeAppender.append(ScribeAppender.java:90) > at > org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:156) > at > org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:129) > at > org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:120) > at > org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:84) > at > org.apache.logging.log4j.core.appender.AsyncAppender$AsyncThread.callAppenders(AsyncAppender.java:454) > at > org.apache.logging.log4j.core.appender.AsyncAppender$AsyncThread.run(AsyncAppender.java:407) > Caused by: java.util.NoSuchElementException: No value present > at java.base/java.util.Optional.get(Optional.java:148) > at > org.apache.logging.log4j.util.StackLocator.calcLocation(StackLocator.java:79) > at > org.apache.logging.log4j.util.StackLocatorUtil.calcLocation(StackLocatorUtil.java:71) > at > org.apache.logging.log4j.core.impl.Log4jLogEvent.getSource(Log4jLogEvent.java:669) > at jdk.internal.reflect.GeneratedMethodAccessor446.invoke(Unknown Source) > at > java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.base/java.lang.reflect.Method.invoke(Method.java:566) > at > com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:688) > at > com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter.serializeAsField(SimpleBeanPropertyFilter.java:208) > at > com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFieldsFiltered(BeanSerializerBase.java:771) > ... 19 more > {code} > When using the Console appender with PatternLayout I was able to see the > missing logs. > Looking at my config I noticed that I set the JSONLayout.locationInfo to > true. After changing it to false I was able to see my logs with the the > JSONLayout properly. > I did saw some logs when setting SONLayout.locationInfo to true, for example > logs from the com.google.common.cache.LocalCache class (sorry but I can't > share the actual exception due to legal reasons). > I'm not familiar with the log4j internals, but this seems like an issue with > Java 11 (or maybe > 8) and the JSONLayout.locationInfo setting. > -- This message was sent by Atlassian JIRA (v7.6.3#76005)