It also might make sense to figure out how to accomplish this with the builder api.
Ralph > On May 6, 2020, at 10:03 PM, Ralph Goers <ralph.go...@dslextreme.com> wrote: > > When I started to read this I thought the conclusion was going to end with > something more like: > > throw new ValidationException(logger.error("Param %s must be in [%s-%s]", > name, low, high)); > > Or > > logger.throw("Param %s must be in [%s-%s]", name, low, high), > ValidationException.class); > > But I don’t see the point of trading > > String msg = String.format("Param %s must be in [%s-%s]", name, low, high); > logger.error(msg); > throw new ValidationException(msg); > > for > > FormattingTuple entry = logger.format("Param {} must be in [{}-{}]”, name, > low, high); > logger.error(entry); > throw new ValidationException(entry.getMessage()); > > This is just trading one set of 3 lines of code for another. > > Ralph > > > >> On May 6, 2020, at 4:58 PM, Robert Middleton <osfan6...@gmail.com> wrote: >> >> This would result in a large number of methods to be added most >> likely, but you could potentially combine the logging with the >> exception throwing: >> >> logger.errorAndThrow( message, ValidationException.class ); >> >> which would log the message at the error level, and then use the given >> class to construct the exception and throw it. >> >> -Robert Middleton >> >> On Wed, May 6, 2020 at 3:43 PM Matt Sicker <boa...@gmail.com> wrote: >>> >>> Potentially useful API update to look at here. Some sort of Logger that >>> throws an exception with the log message instead? >>> >>> ---------- Forwarded message --------- >>> From: Norbert Kiesel <nkie...@metricstream.com> >>> Date: Wed, 6 May 2020 at 12:59 >>> Subject: [slf4j-user] Combined logging and throwing question >>> To: User list for the slf4j project <slf4j-u...@qos.ch> >>> >>> >>> Hi, >>> >>> we have quite a few places in our code where we do: >>> >>> logger.error("Param {} must be in [{}-{}]", name, low, high); >>> throw new ValidationException("Param " + name + " must be in [" + low + >>> "-" + high + "]"); >>> >>> This is obviously ugly. Other options would be to use >>> >>> String msg = String.format("Param %s must be in [%s-%s]", name, low, >>> high); >>> logger.error(msg); >>> throw new ValidationException(msg); >>> >>> or >>> >>> String msg = MessageFormatter.format("Param {} must be in [{}-{}]", new >>> Object[] {name, low, high}).getMessage(); >>> logger.error(msg); >>> throw new ValidationException(msg); >>> >>> 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 >>> >>> FormattingTuple entry = logger.format("Param {} must be in [{}-{}]", >>> name, low, high); >>> logger.error(entry); >>> throw new ValidationException(entry.getMessage()); >>> >>> 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). >>> >>> </nk> >>> >>> --- >>> >>> >>> Norbert Kiesel >>> Systems Architect, Engineering >>> E: nkie...@metricstream.com <sonia.sha...@metricstream.com> >>> W: www.metricstream.com >>> >>> _______________________________________________ >>> slf4j-user mailing list >>> slf4j-u...@qos.ch >>> http://mailman.qos.ch/mailman/listinfo/slf4j-user >>> >>> >>> -- >>> Matt Sicker <boa...@gmail.com> >> > > >