-
- Notifications
You must be signed in to change notification settings - Fork 1.7k
Closed
Description
Description
When I have an instance of a java.sql.Date
object and try to log it as a parameterized message, the newest version of Log4J assumes it's a regular java.util.Date
one and tries to call Date.toInstant()
when logging it. This works for java.util.Date
and its subclasses java.sql.Timestamp
and java.sql.Time
(which uses a specific format for that type), but fails for java.sql.Date
, as it throws an UnsupportedOperationException
.
Configuration
Version: 2.20.0
Logs
ERROR StatusConsoleListener An exception occurred processing Appender Console java.lang.UnsupportedOperationException at java.sql/java.sql.Date.toInstant(Date.java:316) at org.apache.logging.log4j.message.ParameterFormatter.appendDate(ParameterFormatter.java:492) at org.apache.logging.log4j.message.ParameterFormatter.appendSpecialTypes(ParameterFormatter.java:485) at org.apache.logging.log4j.message.ParameterFormatter.recursiveDeepToString(ParameterFormatter.java:474) at org.apache.logging.log4j.message.ParameterFormatter.recursiveDeepToString(ParameterFormatter.java:449) at org.apache.logging.log4j.message.ParameterFormatter.formatMessage2(ParameterFormatter.java:192) at org.apache.logging.log4j.message.ParameterizedMessage.formatTo(ParameterizedMessage.java:227) at (...) at org.apache.logging.log4j.spi.AbstractLogger.info(AbstractLogger.java:1407) at com.example.Log4JTest.test(Log4JTest.java:13) at (...)
Reproduction
log4j2.xml:
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"> <Appenders> <Console name="Console" target="SYSTEM_OUT" follow="true"> <PatternLayout pattern="%d{MM-dd HH:mm:ss.SSS} %5p %c: %m%n%ex"/> </Console> </Appenders> <Loggers> <Root level="info"> <AppenderRef ref="Console" /> </Root> </Loggers> </Configuration>
JUnit test:
public class Log4JTest { @Test void test() { Logger logger = LogManager.getLogger(); logger.info("Test: {}", java.sql.Date.valueOf(LocalDate.now())); } }
Metadata
Metadata
Assignees
Labels
No labels