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