asanguinetti opened a new issue, #2814:
URL: https://github.com/apache/logging-log4j2/issues/2814
## Description
When using the `JsonLayout` in a very simple configuration such as this:
```
<Console name="Console" target="SYSTEM_OUT">
<JsonLayout/>
</Console>
```
There is an `InaccessibleObjectException` when trying to instantiate a
`ContextDataSerializer` because its constructor is protected:
`ERROR An exception occurred processing Appender Console
java.lang.reflect.InaccessibleObjectException: Unable to make protected
org.apache.logging.log4j.core.jackson.ContextDataSerializer() accessible:
module org.apache.logging.log4j.core does not "opens
org.apache.logging.log4j.core.jackson" to module com.fasterxml.jackson.databind`
We are aware that `JsonLayout` has been marked as deprecated and there is
another alternative called `JsonTemplateLayout`. That one works. However, our
customers are still using `JsonLayout` in their configurations and they would
like to be able to keep doing so.
## Configuration
**Version:** Tested in 2.23.1 but probably happens on any 2.x
**Operating system:** Doesn't seem to matter, but tested with macOS 14.6
**JDK:** Tested with Temurin-17.0.11+9
## Logs
```
2024-08-08T18:40:40.439988Z main ERROR An exception occurred processing
Appender Console java.lang.reflect.InaccessibleObjectException: Unable to make
protected org.apache.logging.log4j.core.jackson.ContextDataSerializer()
accessible: module org.apache.logging.log4j.core does not "opens
org.apache.logging.log4j.core.jackson" to module com.fasterxml.jackson.databind
at
java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
at
java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
at
java.base/java.lang.reflect.Constructor.checkCanSetAccessible(Constructor.java:188)
at
java.base/java.lang.reflect.Constructor.setAccessible(Constructor.java:181)
at
[email protected]/com.fasterxml.jackson.databind.util.ClassUtil.checkAndFixAccess(ClassUtil.java:1005)
at
[email protected]/com.fasterxml.jackson.databind.util.ClassUtil.findConstructor(ClassUtil.java:577)
at
[email protected]/com.fasterxml.jackson.databind.util.ClassUtil.createInstance(ClassUtil.java:559)
at
[email protected]/com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializerInstance(DefaultSerializerProvider.java:144)
at
[email protected]/com.fasterxml.jackson.databind.ser.BasicSerializerFactory.findSerializerFromAnnotation(BasicSerializerFactory.java:547)
at
[email protected]/com.fasterxml.jackson.databind.ser.BeanSerializerFactory._constructWriter(BeanSerializerFactory.java:860)
at
[email protected]/com.fasterxml.jackson.databind.ser.BeanSerializerFactory.findBeanProperties(BeanSerializerFactory.java:634)
at
[email protected]/com.fasterxml.jackson.databind.ser.BeanSerializerFactory.constructBeanOrAddOnSerializer(BeanSerializerFactory.java:402)
at
[email protected]/com.fasterxml.jackson.databind.ser.BeanSerializerFactory.findBeanOrAddOnSerializer(BeanSerializerFactory.java:295)
at
[email protected]/com.fasterxml.jackson.databind.ser.BeanSerializerFactory._createSerializer2(BeanSerializerFactory.java:240)
at
[email protected]/com.fasterxml.jackson.databind.ser.BeanSerializerFactory.createSerializer(BeanSerializerFactory.java:174)
at
[email protected]/com.fasterxml.jackson.databind.SerializerProvider._createUntypedSerializer(SerializerProvider.java:1525)
at
[email protected]/com.fasterxml.jackson.databind.SerializerProvider._createAndCacheUntypedSerializer(SerializerProvider.java:1473)
at
[email protected]/com.fasterxml.jackson.databind.SerializerProvider.findValueSerializer(SerializerProvider.java:578)
at
[email protected]/com.fasterxml.jackson.databind.SerializerProvider.findTypedValueSerializer(SerializerProvider.java:856)
at
[email protected]/com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:330)
at
[email protected]/com.fasterxml.jackson.databind.ObjectWriter$Prefetch.serialize(ObjectWriter.java:1574)
at
[email protected]/com.fasterxml.jackson.databind.ObjectWriter._writeValueAndClose(ObjectWriter.java:1275)
at
[email protected]/com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:1114)
at
[email protected]/org.apache.logging.log4j.core.layout.AbstractJacksonLayout.toSerializable(AbstractJacksonLayout.java:379)
at
[email protected]/org.apache.logging.log4j.core.layout.JsonLayout.toSerializable(JsonLayout.java:390)
at
[email protected]/org.apache.logging.log4j.core.layout.AbstractJacksonLayout.toSerializable(AbstractJacksonLayout.java:327)
at
[email protected]/org.apache.logging.log4j.core.layout.JsonLayout.toSerializable(JsonLayout.java:69)
at
[email protected]/org.apache.logging.log4j.core.layout.AbstractJacksonLayout.toSerializable(AbstractJacksonLayout.java:50)
at
[email protected]/org.apache.logging.log4j.core.layout.AbstractStringLayout.toByteArray(AbstractStringLayout.java:295)
at
[email protected]/org.apache.logging.log4j.core.layout.AbstractLayout.encode(AbstractLayout.java:207)
at
[email protected]/org.apache.logging.log4j.core.layout.AbstractLayout.encode(AbstractLayout.java:36)
at
[email protected]/org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.directEncodeEvent(AbstractOutputStreamAppender.java:227)
at
[email protected]/org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.tryAppend(AbstractOutputStreamAppender.java:220)
at
[email protected]/org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:211)
at
[email protected]/org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:160)
at
[email protected]/org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:133)
at
[email protected]/org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:124)
at
[email protected]/org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:88)
at
[email protected]/org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:705)
at
[email protected]/org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:663)
at
[email protected]/org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:639)
at
[email protected]/org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:575)
at
[email protected]/org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:92)
at
[email protected]/org.apache.logging.log4j.core.Logger.log(Logger.java:169)
at
[email protected]/org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2906)
at
[email protected]/org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2859)
at
[email protected]/org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2841)
at
[email protected]/org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2620)
at
[email protected]/org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:2567)
at
[email protected]/org.apache.logging.log4j.spi.AbstractLogger.warn(AbstractLogger.java:3469)
at [email protected]/org.mule.tests.Main.main(Main.java:12)
```
## Reproduction
Attaching a minimalistic Maven project that reproduces the issue.
[log4j-jsonLayout-test.zip](https://github.com/user-attachments/files/16552658/log4j-jsonLayout-test.zip)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]