[ https://issues.apache.org/jira/browse/LOG4J2-1368?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Remko Popma reassigned LOG4J2-1368: ----------------------------------- Assignee: Remko Popma > Status logger drops/ignores exception > ------------------------------------- > > Key: LOG4J2-1368 > URL: https://issues.apache.org/jira/browse/LOG4J2-1368 > Project: Log4j 2 > Issue Type: Bug > Components: API > Affects Versions: 2.5 > Reporter: Remko Popma > Assignee: Remko Popma > > Internal log4j logging like below will just log the message but will not > report the specified exception: > {code} > try { > someProcess(); > } catch (Exception exception) { > StatusLogger.getLogger().warn("error occurred during {}", "some process", > exception); > } > {code} > This is caused by a bug in ParameterizedNoReferenceMessageFactory (the > factory used by StatusLogger): > {code} > final String formatted = new ParameterizedMessage(message, > params).getFormattedMessage(); > return new SimpleMessage(formatted); // exception is dropped > {code} > This factory was introduced to resolve memory leaks that appeared in web > containers because StatusLogger keeps a ring buffer of previously logged > messages and ParameterizedMessage keeps a reference to its parameter objects > (LOG4J2-1176). > AbstractLogger depends on the Message to get the Throwable when logging a > message with parameters, so SimpleMessage is not good enough. I'm thinking to > introduce a new class {{StatusMessage}} (perhaps as an inner class of > ParameterizedNoReferenceMessageFactory in order to keep the API surface > small). StatusMessage would have the formatted string and the Throwable > (which may be null). That should solve this issue. > If the Throwable is a custom Log4j class like AppenderLoggingException then > keeping a reference to it may re-introduce memory leaks again though, but I > guess that is a fight for another day... -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org For additional commands, e-mail: log4j-dev-h...@logging.apache.org