diff --git a/src/main/java/com/github/tony19/timber/loggly/LogglyTree.java b/src/main/java/com/github/tony19/timber/loggly/LogglyTree.java index 0cfae35..7571d6a 100644 --- a/src/main/java/com/github/tony19/timber/loggly/LogglyTree.java +++ b/src/main/java/com/github/tony19/timber/loggly/LogglyTree.java @@ -21,6 +21,8 @@ import java.io.PrintWriter; import java.io.StringWriter; +import java.util.MissingFormatArgumentException; + /** * A Timber tree that posts * log messages to Loggly @@ -155,9 +157,15 @@ public void w(Throwable t, String message, Object... args) { * @return JSON string */ private String toJson(Level level, String message, Object... args) { - return String.format("{\"level\": \"%1$s\", \"message\": \"%2$s\"}", - level, - String.format(message, args).replace("\"", "\\\"")); + try { + return String.format("{\"level\": \"%1$s\", \"message\": \"%2$s\"}", + level, + String.format(message, args).replace("\"", "\\\"")); + } catch(MissingFormatArgumentException exception) { + return String.format("{\"level\": \"%1$s\", \"message\": \"%2$s\"}", + level, + message.replace("\"", "\\\"")); + } } /** @@ -180,10 +188,18 @@ private String formatThrowable(Throwable t) { * @return JSON string */ private String toJson(Level level, String message, Throwable t, Object... args) { - return String.format("{\"level\": \"%1$s\", \"message\": \"%2$s\", \"exception\": \"%3$s\"}", - level, - String.format(message, args).replace("\"", "\\\""), - formatThrowable(t)); + try { + return String.format("{\"level\": \"%1$s\", \"message\": \"%2$s\", \"exception\": \"%3$s\"}", + level, + String.format(message, args).replace("\"", "\\\""), + formatThrowable(t)); + } catch(MissingFormatArgumentException exception) { + return String.format("{\"level\": \"%1$s\", \"message\": \"%2$s\", \"exception\": \"%3$s\"}", + level, + message.replace("\"", "\\\""), + formatThrowable(t)); + } + } /**