You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@logging.apache.org by "Ralph Goers (JIRA)" <ji...@apache.org> on 2019/06/22 23:45:00 UTC

[jira] [Commented] (LOG4J2-2633) JSONLayout can't find Log4jLogEvent["source"] in Java 11

    [ https://issues.apache.org/jira/browse/LOG4J2-2633?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16870397#comment-16870397 ] 

Ralph Goers commented on LOG4J2-2633:
-------------------------------------

From the line number I can tell that you are executing the Java 9+ vrsion of StackLocator and that it seems to be failing to find a StackFrame for the method calling the logger. I don't see the call in the stack trace above either.

> 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)