Yep - and I totally agree - unfortunately there is no overload which lets you pass a string + args + throwable. This is why I started using String.format(msg, params) as you still got the param substitution and you got the Throwable handling from the logging class. I could well be completely missing something here tho!