Norbert Kiesel created SLF4J-490:
------------------------------------
Summary: Better combination for logging and exceptions
Key: SLF4J-490
URL: https://jira.qos.ch/browse/SLF4J-490
Project: SLF4J
Issue Type: Improvement
Components: Core API
Affects Versions: 1.7.29
Reporter: Norbert Kiesel
Assignee: SLF4J developers list
Hi,
we have quite a few places in our code where we do:
{code:java}
logger.error("Param {} must be in [{}-{}]", name, low, high);
throw new ValidationException("Param " + name + " must be in [" + low + "-" +
high + "]"); {code}
This is obviously ugly. Other options would be to use
{code:java}
String msg = String.format("Param %s must be in [%s-%s]", name, low, high);
logger.error(msg);
throw new ValidationException(msg);{code}
or
{code:java}
String msg = MessageFormatter.format("Param {} must be in [{}-{}]", new
Object[] {name, low, high}).getMessage();
logger.error(msg);
throw new ValidationException(msg); {code}
Both are not ideal. Can't we have a `Logger.format` method which returns a
`FormattingTuple` w/o the explicit array creation
and allow `Logger.error` etc. to be called with a `FormattingTuple`? Then I
could write
{code:java}
FormattingTuple entry = logger.format("Param {} must be in [{}-{}]", name, low,
high);
logger.error(entry);
throw new ValidationException(entry.getMessage());{code}
For my own exception classes I could then even offer a constructor that takes
a FormattingTuple and internally use the message and the throwable (if it is
not null).
Bonus: pick a nicer name than `FormattingTuple` like `LogEntry`.
--
This message was sent by Atlassian Jira
(v8.8.0#808000)
_______________________________________________
slf4j-dev mailing list
[email protected]
http://mailman.qos.ch/mailman/listinfo/slf4j-dev