[
https://issues.apache.org/jira/browse/LOG4J2-2970?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17243742#comment-17243742
]
Ralph Goers commented on LOG4J2-2970:
-------------------------------------
In most "modern" systems over 99% of the time logging is disabled for certain
log levels such as debug. I assume from your example you are proposing that
Logger only return a String for error methods. But doing that would be
confusing since it would be inconsistent with other log methods. Even if we did
that it still doesn't get around the compatibility breakage which makes this
pretty much a non-starter.
> Adding String return type of each log method
> --------------------------------------------
>
> Key: LOG4J2-2970
> URL: https://issues.apache.org/jira/browse/LOG4J2-2970
> Project: Log4j 2
> Issue Type: New Feature
> Components: API
> Affects Versions: 2.13.3
> Reporter: Colin Zhang
> Priority: Critical
> Labels: API, user-experience
> Original Estimate: 168h
> Remaining Estimate: 168h
>
> In many industry systems, we need to log the error and then throw a new
> exception with the same message. The logger will populate the message with
> markers and variables.
> But we need to manually populated it by string + again when construct the
> exception message. This is an anti-pattern.
> Please take below snippet as example:
> {code:java}
> log.error("The number of records is {} which exceed the threshold {}", num,
> threshold);
> throw new ValidationException("The number of record is " + num + " which
> exceed the threshold " + threshold);
> {code}
>
> If the API can return populated message, the code would turn much better:
> {code:java}
> String error = log.error("The number of records is {} which exceed the
> threshold {}", num, threshold);
> throw new ValidationException(error);
> {code}
>
> The only concern is that this may only works for synchronous logging, not
> work for asynchronous way. But I believe it could be resolved.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)