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..348208a 100644 --- a/src/main/java/com/github/tony19/timber/loggly/LogglyTree.java +++ b/src/main/java/com/github/tony19/timber/loggly/LogglyTree.java @@ -21,16 +21,22 @@ import java.io.PrintWriter; import java.io.StringWriter; +import android.util.Log; + /** * A Timber tree that posts * log messages to Loggly - * * @author tony19@gmail.com */ -public class LogglyTree extends Timber.HollowTree implements Timber.TaggedTree { +public class LogglyTree extends Timber.Tree { private final LogglyClient loggly; private LogglyClient.Callback handler; + private String appName; + private String[] LEVEL = { + "DEBUG", "INFO", "WARN", "ERROR" + }; + private final int DEBUG = 0, INFO = 1, WARN = 2, ERROR = 3; /** Log severity level */ private enum Level { @@ -40,6 +46,7 @@ ERROR } + /** * Creates a Timber * tree for posting messages to Loggly @@ -48,10 +55,44 @@ public LogglyTree(String token) { loggly = new LogglyClient(token); - // Setup an async callback // TODO: handle failed messages with N retries handler = new LogglyClient.Callback() { @Override + public void success() { + + } + + @Override + public void failure(String error) { + System.err.println("LogglyTree failed: " + error); + + } + }; + } + + public LogglyTree(String token, String tag) { + loggly = new LogglyClient(token, tag); + // Setup an async callback + // TODO: handle failed messages with N retries + handler = new LogglyClient.Callback() {@Override + public void success() { + // XXX: Handle success + } + + @Override + public void failure(String error) { + System.err.println("LogglyTree failed: " + error); + } + }; + + } + + public LogglyTree(String token, String tag, String appName) { + loggly = new LogglyClient(token, tag); + this.appName = appName; + // Setup an async callback + // TODO: handle failed messages with N retries + handler = new LogglyClient.Callback() {@Override public void success() { // XXX: Handle success } @@ -70,7 +111,7 @@ public void failure(String error) { */ @Override public void d(String message, Object... args) { - log(Level.DEBUG, message, args); + log(DEBUG, message, args); } /** @@ -81,7 +122,7 @@ public void d(String message, Object... args) { */ @Override public void d(Throwable t, String message, Object... args) { - log(Level.DEBUG, message, t, args); + log(DEBUG, message, t, args); } /** @@ -91,7 +132,7 @@ public void d(Throwable t, String message, Object... args) { */ @Override public void i(String message, Object... args) { - log(Level.INFO, message, args); + log(INFO, message, args); } /** @@ -102,7 +143,7 @@ public void i(String message, Object... args) { */ @Override public void i(Throwable t, String message, Object... args) { - log(Level.INFO, message, t, args); + log(INFO, message, t, args); } /** @@ -112,7 +153,8 @@ public void i(Throwable t, String message, Object... args) { */ @Override public void e(String message, Object... args) { - log(Level.ERROR, message, args); + log(ERROR, message, args); + } /** @@ -123,7 +165,7 @@ public void e(String message, Object... args) { */ @Override public void e(Throwable t, String message, Object... args) { - log(Level.ERROR, message, t, args); + log(ERROR, message, t, args); } /** @@ -133,7 +175,8 @@ public void e(Throwable t, String message, Object... args) { */ @Override public void w(String message, Object... args) { - log(Level.WARN, message, args); + log(WARN, message, args); + } /** @@ -144,7 +187,8 @@ public void w(String message, Object... args) { */ @Override public void w(Throwable t, String message, Object... args) { - log(Level.WARN, message, t, args); + log(WARN, message, t, args); + } /** @@ -153,11 +197,20 @@ public void w(Throwable t, String message, Object... args) { * @param message message to be logged * @param args message formatting arguments * @return JSON string + * + * */ + + private String toJson(int level, String message, Object... args) { + return String.format("{\"level\": \"%1$s\", \"message\": \"%2$s\",\"appName\" : \"%3$s\"}", + LEVEL[level], + String.format(message, args).replace("\"", "\\\""), String.format(appName).replace("\"", "\\\"")); + } + private String toJson(Level level, String message, Object... args) { - return String.format("{\"level\": \"%1$s\", \"message\": \"%2$s\"}", + return String.format("{\"level\": \"%1$s\", \"message\": \"%2$s\",\"appName\" : \"%3$s\"}", level, - String.format(message, args).replace("\"", "\\\"")); + String.format(message, args).replace("\"", "\\\""), String.format(appName).replace("\"", "\\\"")); } /** @@ -180,10 +233,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)); + return String.format("{\"level\": \"%1$s\", \"message\": \"%2$s\", \"exception\": \"%3$s\",\"appName\" : \"%4$s\"}", + level, + String.format(message, args).replace("\"", "\\\""), + formatThrowable(t), String.format(appName).replace("\"", "\\\"")); + } + + private String toJson(int level, String message, Throwable t, Object... args) { + return String.format("{\"level\": \"%1$s\", \"message\": \"%2$s\", \"exception\": \"%3$s\",\"appName\" : \"%4$s\"}", + LEVEL[level], + String.format(message, args).replace("\"", "\\\""), + formatThrowable(t), String.format(appName).replace("\"", "\\\"")); + } /** @@ -193,7 +254,8 @@ private String toJson(Level level, String message, Throwable t, Object... args) * @param t throwable * @param args message formatting arguments */ - private void log(Level level, String message, Throwable t, Object... args) { + + private void log(int level, String message, Throwable t, Object... args) { loggly.log(toJson(level, message, t, args), handler); } @@ -203,7 +265,8 @@ private void log(Level level, String message, Throwable t, Object... args) { * @param message message to be logged * @param args message formatting arguments */ - private void log(Level level, String message, Object... args) { + + private void log(int level, String message, Object... args) { loggly.log(toJson(level, message, args), handler); } @@ -215,7 +278,12 @@ private void log(Level level, String message, Object... args) { * to clear tags */ @Override - public final void tag(String tag) { - loggly.setTags(tag); + protected void log(int level, String tag, String message, Throwable t) { + // TODO Auto-generated method stub + loggly.log(toJson(level, tag, message, t), handler); + } + + + }