diff --git a/README.md b/README.md index 9983d267..3d487c7b 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ [![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-Logger-brightgreen.svg?style=flat)](http://android-arsenal.com/details/1/1658) [![](https://img.shields.io/badge/AndroidWeekly-%23147-blue.svg)](http://androidweekly.net/issues/issue-147) -[![Join the chat at https://gitter.im/orhanobut/logger](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/orhanobut/logger?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![Build Status](https://travis-ci.org/orhanobut/logger.svg?branch=master)](https://travis-ci.org/orhanobut/logger) +[![Join the chat at https://gitter.im/orhanobut/logger](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/orhanobut/logger?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![Build Status](https://travis-ci.org/orhanobut/logger.svg?branch=master)](https://travis-ci.org/orhanobut/logger) @@ -9,7 +9,7 @@ Simple, pretty and powerful logger for android ### Setup Download ```groovy -compile 'com.orhanobut:logger:2.0.0' +compile 'com.orhanobut:logger:2.1.0' ``` Initialize @@ -61,7 +61,7 @@ FormatStrategy formatStrategy = PrettyFormatStrategy.newBuilder() .methodCount(0) // (Optional) How many method line to show. Default 2 .methodOffset(7) // (Optional) Hides internal method calls up to offset. Default 5 .logStrategy(customLog) // (Optional) Changes the log strategy to print out. Default LogCat - .tag("My custom tag") // (Optional) Custom tag for each log. Default PRETTY_LOGGER + .tag("My custom tag") // (Optional) Global tag for every log. Default PRETTY_LOGGER .build(); Logger.addLogAdapter(new AndroidLogAdapter(formatStrategy)); diff --git a/art/logger_output.png b/art/logger_output.png index b71c67e1..9263d768 100644 Binary files a/art/logger_output.png and b/art/logger_output.png differ diff --git a/gradle.properties b/gradle.properties index 25a8c3fc..c1579b64 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -VERSION_NAME=2.0.0 +VERSION_NAME=2.1.0 GROUP=com.orhanobut POM_DESCRIPTION=Simple, Pretty and Advanced Logger diff --git a/logger/src/main/java/com/orhanobut/logger/LoggerPrinter.java b/logger/src/main/java/com/orhanobut/logger/LoggerPrinter.java index eeca1e65..bc9cdb44 100644 --- a/logger/src/main/java/com/orhanobut/logger/LoggerPrinter.java +++ b/logger/src/main/java/com/orhanobut/logger/LoggerPrinter.java @@ -7,7 +7,6 @@ import java.io.StringReader; import java.io.StringWriter; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import javax.xml.transform.OutputKeys; @@ -51,13 +50,7 @@ class LoggerPrinter implements Printer { } @Override public void d(Object object) { - String message; - if (object.getClass().isArray()) { - message = Arrays.deepToString((Object[]) object); - } else { - message = object.toString(); - } - log(DEBUG, null, message); + log(DEBUG, null, Utils.toString(object)); } @Override public void e(String message, Object... args) { diff --git a/logger/src/main/java/com/orhanobut/logger/PrettyFormatStrategy.java b/logger/src/main/java/com/orhanobut/logger/PrettyFormatStrategy.java index c3b4e7c1..0d3e739b 100644 --- a/logger/src/main/java/com/orhanobut/logger/PrettyFormatStrategy.java +++ b/logger/src/main/java/com/orhanobut/logger/PrettyFormatStrategy.java @@ -17,12 +17,12 @@ public class PrettyFormatStrategy implements FormatStrategy { /** * Drawing toolbox */ - private static final char TOP_LEFT_CORNER = '╔'; - private static final char BOTTOM_LEFT_CORNER = '╚'; - private static final char MIDDLE_CORNER = '╟'; - private static final char HORIZONTAL_DOUBLE_LINE = '║'; - private static final String DOUBLE_DIVIDER = "════════════════════════════════════════════════════════"; - private static final String SINGLE_DIVIDER = "────────────────────────────────────────────────────────"; + private static final char TOP_LEFT_CORNER = '┌'; + private static final char BOTTOM_LEFT_CORNER = '└'; + private static final char MIDDLE_CORNER = '├'; + private static final char HORIZONTAL_LINE = '│'; + private static final String DOUBLE_DIVIDER = "────────────────────────────────────────────────────────"; + private static final String SINGLE_DIVIDER = "┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄"; private static final String TOP_BORDER = TOP_LEFT_CORNER + DOUBLE_DIVIDER + DOUBLE_DIVIDER; private static final String BOTTOM_BORDER = BOTTOM_LEFT_CORNER + DOUBLE_DIVIDER + DOUBLE_DIVIDER; private static final String MIDDLE_BORDER = MIDDLE_CORNER + SINGLE_DIVIDER + SINGLE_DIVIDER; @@ -81,7 +81,7 @@ private void logTopBorder(int logType, String tag) { private void logHeaderContent(int logType, String tag, int methodCount) { StackTraceElement[] trace = Thread.currentThread().getStackTrace(); if (showThreadInfo) { - logChunk(logType, tag, HORIZONTAL_DOUBLE_LINE + " Thread: " + Thread.currentThread().getName()); + logChunk(logType, tag, HORIZONTAL_LINE + " Thread: " + Thread.currentThread().getName()); logDivider(logType, tag); } String level = ""; @@ -99,7 +99,8 @@ private void logHeaderContent(int logType, String tag, int methodCount) { continue; } StringBuilder builder = new StringBuilder(); - builder.append("║ ") + builder.append(HORIZONTAL_LINE) + .append(' ') .append(level) .append(getSimpleClassName(trace[stackIndex].getClassName())) .append(".") @@ -126,7 +127,7 @@ private void logDivider(int logType, String tag) { private void logContent(int logType, String tag, String chunk) { String[] lines = chunk.split(System.getProperty("line.separator")); for (String line : lines) { - logChunk(logType, tag, HORIZONTAL_DOUBLE_LINE + " " + line); + logChunk(logType, tag, HORIZONTAL_LINE + " " + line); } } diff --git a/logger/src/main/java/com/orhanobut/logger/Utils.java b/logger/src/main/java/com/orhanobut/logger/Utils.java index cf47b973..90d39b0e 100644 --- a/logger/src/main/java/com/orhanobut/logger/Utils.java +++ b/logger/src/main/java/com/orhanobut/logger/Utils.java @@ -3,6 +3,7 @@ import java.io.PrintWriter; import java.io.StringWriter; import java.net.UnknownHostException; +import java.util.Arrays; import static com.orhanobut.logger.Logger.ASSERT; import static com.orhanobut.logger.Logger.DEBUG; @@ -106,4 +107,38 @@ static String logLevel(int value) { return "UNKNOWN"; } } + + public static String toString(Object object) { + if (!object.getClass().isArray()) { + return object.toString(); + } + if (object instanceof boolean[]) { + return Arrays.toString((boolean[]) object); + } + if (object instanceof byte[]) { + return Arrays.toString((byte[]) object); + } + if (object instanceof char[]) { + return Arrays.toString((char[]) object); + } + if (object instanceof short[]) { + return Arrays.toString((short[]) object); + } + if (object instanceof int[]) { + return Arrays.toString((int[]) object); + } + if (object instanceof long[]) { + return Arrays.toString((long[]) object); + } + if (object instanceof float[]) { + return Arrays.toString((float[]) object); + } + if (object instanceof double[]) { + return Arrays.toString((double[]) object); + } + if (object instanceof Object[]) { + return Arrays.deepToString((Object[]) object); + } + return "Couldn't find a correct type for the object"; + } } diff --git a/logger/src/test/java/com.orhanobut.logger/LogAssert.java b/logger/src/test/java/com.orhanobut.logger/LogAssert.java index 2028ecc4..f4d43427 100644 --- a/logger/src/test/java/com.orhanobut.logger/LogAssert.java +++ b/logger/src/test/java/com.orhanobut.logger/LogAssert.java @@ -7,12 +7,12 @@ final class LogAssert { private static final String DEFAULT_TAG = "PRETTY_LOGGER"; - private static final char TOP_LEFT_CORNER = '╔'; - private static final char BOTTOM_LEFT_CORNER = '╚'; - private static final char MIDDLE_CORNER = '╟'; - private static final char HORIZONTAL_DOUBLE_LINE = '║'; - private static final String DOUBLE_DIVIDER = "════════════════════════════════════════════════════════"; - private static final String SINGLE_DIVIDER = "────────────────────────────────────────────────────────"; + private static final char TOP_LEFT_CORNER = '┌'; + private static final char BOTTOM_LEFT_CORNER = '└'; + private static final char MIDDLE_CORNER = '├'; + private static final char HORIZONTAL_LINE = '│'; + private static final String DOUBLE_DIVIDER = "────────────────────────────────────────────────────────"; + private static final String SINGLE_DIVIDER = "┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄"; private static final String TOP_BORDER = TOP_LEFT_CORNER + DOUBLE_DIVIDER + DOUBLE_DIVIDER; private static final String BOTTOM_BORDER = BOTTOM_LEFT_CORNER + DOUBLE_DIVIDER + DOUBLE_DIVIDER; private static final String MIDDLE_BORDER = MIDDLE_CORNER + SINGLE_DIVIDER + SINGLE_DIVIDER; @@ -43,15 +43,15 @@ LogAssert hasMiddleBorder() { } LogAssert hasThread(String threadName) { - return hasLog(priority, tag, HORIZONTAL_DOUBLE_LINE + " " + "Thread: " + threadName); + return hasLog(priority, tag, HORIZONTAL_LINE + " " + "Thread: " + threadName); } LogAssert hasMethodInfo(String methodInfo) { - return hasLog(priority, tag, HORIZONTAL_DOUBLE_LINE + " " + methodInfo); + return hasLog(priority, tag, HORIZONTAL_LINE + " " + methodInfo); } LogAssert hasMessage(String message) { - return hasLog(priority, tag, HORIZONTAL_DOUBLE_LINE + " " + message); + return hasLog(priority, tag, HORIZONTAL_LINE + " " + message); } private LogAssert hasLog(int priority, String tag, String message) { diff --git a/logger/src/test/java/com.orhanobut.logger/LoggerPrinterTest.java b/logger/src/test/java/com.orhanobut.logger/LoggerPrinterTest.java index e4dcbf15..90ee8e47 100644 --- a/logger/src/test/java/com.orhanobut.logger/LoggerPrinterTest.java +++ b/logger/src/test/java/com.orhanobut.logger/LoggerPrinterTest.java @@ -91,17 +91,39 @@ public class LoggerPrinterTest { verify(adapter).log(DEBUG, "tag", "message"); } + @Test public void logObject() { + Object object = "Test"; + + printer.d(object); + + verify(adapter).log(DEBUG, null, "Test"); + } + @Test public void logArray() { + Object object = new int[]{1, 6, 7, 30, 33}; + + printer.d(object); + + verify(adapter).log(DEBUG, null, "[1, 6, 7, 30, 33]"); + } + + @Test public void logStringArray() { + Object object = new String[]{"a", "b", "c"}; + + printer.d(object); + + verify(adapter).log(DEBUG, null, "[a, b, c]"); + } + + @Test public void logMultiDimensionArray() { double[][] doubles = { - {1.2, 1.6, 1.7, 30, 33}, - {1.2, 1.6, 1.7, 30, 33}, - {1.2, 1.6, 1.7, 30, 33}, - {1.2, 1.6, 1.7, 30, 33} + {1, 6}, + {1.2, 33}, }; printer.d(doubles); - verify(adapter).log(DEBUG, null, Arrays.deepToString(doubles)); + verify(adapter).log(DEBUG, null, "[[1.0, 6.0], [1.2, 33.0]]"); } @Test public void logList() { diff --git a/logger/src/test/java/com.orhanobut.logger/UtilsTest.java b/logger/src/test/java/com.orhanobut.logger/UtilsTest.java index 33d89664..31c6b3f8 100644 --- a/logger/src/test/java/com.orhanobut.logger/UtilsTest.java +++ b/logger/src/test/java/com.orhanobut.logger/UtilsTest.java @@ -50,4 +50,45 @@ public class UtilsTest { assertThat(Utils.logLevel(Logger.ERROR)).isEqualTo("ERROR"); assertThat(Utils.logLevel(100)).isEqualTo("UNKNOWN"); } + + @Test public void objectToString() { + Object object = "Test"; + + assertThat(Utils.toString(object)).isEqualTo("Test"); + } + + @Test public void primitiveArrayToString() { + Object booleanArray = new boolean[]{true, false, true}; + assertThat(Utils.toString(booleanArray)).isEqualTo("[true, false, true]"); + + Object byteArray = new byte[]{1, 0, 1}; + assertThat(Utils.toString(byteArray)).isEqualTo("[1, 0, 1]"); + + Object charArray = new char[]{'a', 'b', 'c'}; + assertThat(Utils.toString(charArray)).isEqualTo("[a, b, c]"); + + Object shortArray = new short[]{1, 3, 5}; + assertThat(Utils.toString(shortArray)).isEqualTo("[1, 3, 5]"); + + Object intArray = new int[]{1, 3, 5}; + assertThat(Utils.toString(intArray)).isEqualTo("[1, 3, 5]"); + + Object longArray = new long[]{1, 3, 5}; + assertThat(Utils.toString(longArray)).isEqualTo("[1, 3, 5]"); + + Object floatArray = new float[]{1, 3, 5}; + assertThat(Utils.toString(floatArray)).isEqualTo("[1.0, 3.0, 5.0]"); + + Object doubleArray = new double[]{1, 3, 5}; + assertThat(Utils.toString(doubleArray)).isEqualTo("[1.0, 3.0, 5.0]"); + } + + @Test public void multiDimensionArrayToString() { + Object object = new int[][]{ + {1, 2, 3}, + {4, 5, 6} + }; + + assertThat(Utils.toString(object)).isEqualTo("[[1, 2, 3], [4, 5, 6]]"); + } } \ No newline at end of file