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]

Reply via email to