diff --git a/app/src/main/java/com/blankj/androidutilcode/UtilsApp.java b/app/src/main/java/com/blankj/androidutilcode/UtilsApp.java
index 64f29fd214bdecc8a8f4be231e8ba95f1c28c6c5..9e3402982e0f586a7a9b63029ea3af95432abb30 100644
--- a/app/src/main/java/com/blankj/androidutilcode/UtilsApp.java
+++ b/app/src/main/java/com/blankj/androidutilcode/UtilsApp.java
@@ -38,6 +38,6 @@ public class UtilsApp extends Application {
appContext = this;
Utils.init(appContext);
CrashUtils.getInstance().init();
- lBuilder = new LogUtils.Builder();
+ lBuilder = new LogUtils.Builder().setLogSwitch(BuildConfig.DEBUG);
}
}
diff --git a/app/src/main/java/com/blankj/androidutilcode/activity/LogActivity.java b/app/src/main/java/com/blankj/androidutilcode/activity/LogActivity.java
index 82c9f6d798a116d40710785da5999fc18724262c..4bc2cd4cfe843fa743a1078b92d64b2228f1f55c 100644
--- a/app/src/main/java/com/blankj/androidutilcode/activity/LogActivity.java
+++ b/app/src/main/java/com/blankj/androidutilcode/activity/LogActivity.java
@@ -30,13 +30,14 @@ public class LogActivity extends Activity
private String globalTag = "";
private boolean border = false;
+ private boolean file = false;
private int filter = LogUtils.V;
private static final int UPDATE_TAG = 0x01;
- private static final int UPDATE_BORDER = 0x01 << 1;
- private static final int UPDATE_FILTER = 0x01 << 2;
+ private static final int UPDATE_FILE = 0x01 << 1;
+ private static final int UPDATE_BORDER = 0x01 << 2;
+ private static final int UPDATE_FILTER = 0x01 << 3;
- private Thread mThread;
private Runnable mRunnable = new Runnable() {
@Override
public void run() {
@@ -55,7 +56,7 @@ public class LogActivity extends Activity
static {
StringBuilder sb = new StringBuilder();
- sb.append("len = 10400\n content = \"");
+ sb.append("len = 10400\ncontent = \"");
for (int i = 0; i < 800; ++i) {
sb.append("Hello world. ");
}
@@ -71,6 +72,7 @@ public class LogActivity extends Activity
mBuilder = UtilsApp.lBuilder;
findViewById(R.id.btn_toggle_tag).setOnClickListener(this);
findViewById(R.id.btn_toggle_border).setOnClickListener(this);
+ findViewById(R.id.btn_toggle_file).setOnClickListener(this);
findViewById(R.id.btn_toggle_filter).setOnClickListener(this);
findViewById(R.id.btn_log_no_tag).setOnClickListener(this);
findViewById(R.id.btn_log_with_tag).setOnClickListener(this);
@@ -91,6 +93,9 @@ public class LogActivity extends Activity
case R.id.btn_toggle_tag:
updateAbout(UPDATE_TAG);
break;
+ case R.id.btn_toggle_file:
+ updateAbout(UPDATE_FILE);
+ break;
case R.id.btn_toggle_border:
updateAbout(UPDATE_BORDER);
break;
@@ -114,8 +119,8 @@ public class LogActivity extends Activity
LogUtils.a("customTag", "assert");
break;
case R.id.btn_log_in_new_thread:
- mThread = new Thread(mRunnable);
- mThread.start();
+ Thread thread = new Thread(mRunnable);
+ thread.start();
break;
case R.id.btn_log_null:
LogUtils.v(null);
@@ -153,6 +158,9 @@ public class LogActivity extends Activity
case UPDATE_TAG:
globalTag = globalTag.equals(TAG) ? "" : TAG;
break;
+ case UPDATE_FILE:
+ file = !file;
+ break;
case UPDATE_BORDER:
border = !border;
break;
@@ -161,9 +169,11 @@ public class LogActivity extends Activity
break;
}
mBuilder.setGlobalTag(globalTag)
+ .setLog2FileSwitch(file)
.setBorderSwitch(border)
.setLogFilter(filter);
tvAboutLog.setText("tag: " + (globalTag.equals("") ? "null" : TAG)
+ + "\nfile: " + String.valueOf(file)
+ "\nborder: " + String.valueOf(border)
+ "\nfilter: " + (filter == LogUtils.V ? "Verbose" : "Warn")
);
diff --git a/app/src/main/res/layout/activity_activity.xml b/app/src/main/res/layout/activity_activity.xml
index d55552643b450ca7068719bf1dab09b0cec4f1ce..68d5a6f43a1af4416d03a3594d09203bdf589336 100644
--- a/app/src/main/res/layout/activity_activity.xml
+++ b/app/src/main/res/layout/activity_activity.xml
@@ -10,13 +10,6 @@
android:orientation="vertical"
android:padding="@dimen/spacing_small">
-
-
+
+
diff --git a/app/src/main/res/layout/activity_app.xml b/app/src/main/res/layout/activity_app.xml
index 3fa816c6857dd7077aaf845c48fa3bb19ffdd545..6944cc61384e3b6a3f9eacb9672a769a7773749f 100644
--- a/app/src/main/res/layout/activity_app.xml
+++ b/app/src/main/res/layout/activity_app.xml
@@ -11,6 +11,14 @@
android:orientation="vertical"
android:padding="@dimen/spacing_small">
+
+
-
diff --git a/app/src/main/res/layout/activity_device.xml b/app/src/main/res/layout/activity_device.xml
index 75ddf08e27b1bedac7e3a5a5003b50655f75ad6b..61a4b57504d1dddee16fe8b60874b0a924d59cd6 100644
--- a/app/src/main/res/layout/activity_device.xml
+++ b/app/src/main/res/layout/activity_device.xml
@@ -10,6 +10,13 @@
android:orientation="vertical"
android:padding="@dimen/spacing_small">
+
-
-
-
diff --git a/app/src/main/res/layout/activity_flashlight.xml b/app/src/main/res/layout/activity_flashlight.xml
index 7e788fd74a10dbee18ebc828938dded53603172b..b8f12f53ea3da7cd2cf0cd6e7688ad1a445c4014 100644
--- a/app/src/main/res/layout/activity_flashlight.xml
+++ b/app/src/main/res/layout/activity_flashlight.xml
@@ -11,6 +11,14 @@
android:orientation="vertical"
android:padding="@dimen/spacing_small">
+
+
-
-
diff --git a/app/src/main/res/layout/activity_handler.xml b/app/src/main/res/layout/activity_handler.xml
index 2a04dd6c192e7fd8d0a48e30056e1b900f301939..95a06ff457b31678100147c72eaf9fb26951cec6 100644
--- a/app/src/main/res/layout/activity_handler.xml
+++ b/app/src/main/res/layout/activity_handler.xml
@@ -10,14 +10,6 @@
android:orientation="vertical"
android:padding="@dimen/spacing_small">
-
-
+
diff --git a/app/src/main/res/layout/activity_keyboard.xml b/app/src/main/res/layout/activity_keyboard.xml
index 488e7b4a2574fb66fa3eb3bc6ea1ab06ea5c874d..83ecfe8c8e3853f4adced8aacd843c59653668d2 100644
--- a/app/src/main/res/layout/activity_keyboard.xml
+++ b/app/src/main/res/layout/activity_keyboard.xml
@@ -11,6 +11,14 @@
android:orientation="vertical"
android:padding="@dimen/spacing_small">
+
+
-
-
diff --git a/app/src/main/res/layout/activity_log.xml b/app/src/main/res/layout/activity_log.xml
index 86752b8bf4059ff8008a50b51133c8644d1de025..e5c740a332e37c44332e0931f66cc221e7a11230 100644
--- a/app/src/main/res/layout/activity_log.xml
+++ b/app/src/main/res/layout/activity_log.xml
@@ -10,6 +10,13 @@
android:orientation="vertical"
android:padding="@dimen/spacing_small">
+
+
+
+
-
-
diff --git a/app/src/main/res/layout/activity_network.xml b/app/src/main/res/layout/activity_network.xml
index 85e2e3eb023ae9f5cd875e6a0d27167c3d78aa09..e7a602617fe1f252a6384ff1f932b08156d7caa3 100644
--- a/app/src/main/res/layout/activity_network.xml
+++ b/app/src/main/res/layout/activity_network.xml
@@ -11,6 +11,14 @@
android:orientation="vertical"
android:padding="@dimen/spacing_small">
+
+
-
-
-
diff --git a/app/src/main/res/layout/activity_permission.xml b/app/src/main/res/layout/activity_permission.xml
index 4e81eecc19930eb1940281c95ef4646c51b8e3f3..7d870ef5a47415b1700cf5fa38c90c6c1dc8f5df 100644
--- a/app/src/main/res/layout/activity_permission.xml
+++ b/app/src/main/res/layout/activity_permission.xml
@@ -11,6 +11,14 @@
android:orientation="vertical"
android:padding="@dimen/spacing_small">
+
+
-
-
-
diff --git a/app/src/main/res/layout/activity_phone.xml b/app/src/main/res/layout/activity_phone.xml
index 1ae6956e60346868a1ecae2fc9f8ac747e2e3f95..43241b23a5a8920778812dace08dfb3b46068de9 100644
--- a/app/src/main/res/layout/activity_phone.xml
+++ b/app/src/main/res/layout/activity_phone.xml
@@ -11,6 +11,14 @@
android:orientation="vertical"
android:padding="@dimen/spacing_small">
+
+
-
-
diff --git a/app/src/main/res/layout/activity_process.xml b/app/src/main/res/layout/activity_process.xml
index 108621f410d9d2aa023166c2e59161571e022945..e177510e145e558e234f6cee8c4c348f48597534 100644
--- a/app/src/main/res/layout/activity_process.xml
+++ b/app/src/main/res/layout/activity_process.xml
@@ -10,14 +10,6 @@
android:orientation="vertical"
android:padding="@dimen/spacing_small">
-
-
+
+
diff --git a/app/src/main/res/layout/activity_toast.xml b/app/src/main/res/layout/activity_toast.xml
index 8923d26b3ef7e2adb6c0a1cbf015fca5b649bcd4..05cb2b41b1ed14289f93a6370a16725a804c33e3 100644
--- a/app/src/main/res/layout/activity_toast.xml
+++ b/app/src/main/res/layout/activity_toast.xml
@@ -11,6 +11,14 @@
android:orientation="vertical"
android:padding="@dimen/spacing_small">
+
+
-
-
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index c7caaf19916262ae44e4e83a3c95c92e889bce3c..5ff5b312314c27ee6fc3c37660fc182b7325b9fa 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -80,6 +80,7 @@
Toggle Tag
Toggle Border
Toggle Filter
+ Toggle File
Log With No Tag
Log With Tag
Log In New Thread
diff --git a/utilcode/src/main/java/com/blankj/utilcode/util/LogUtils.java b/utilcode/src/main/java/com/blankj/utilcode/util/LogUtils.java
index 5d2d3089a8b3b76201bf0fa26abd7e0e808bc7cf..e7715f2acf3de597722e838f84f2baa0e452a5c1 100644
--- a/utilcode/src/main/java/com/blankj/utilcode/util/LogUtils.java
+++ b/utilcode/src/main/java/com/blankj/utilcode/util/LogUtils.java
@@ -61,22 +61,24 @@ public final class LogUtils {
private static int stackIndex = 0;
private static Callable sTask;
+
private static final String LINE_SEPARATOR = System.getProperty("line.separator");
private static final String TOP_BORDER = "╔═══════════════════════════════════════════════════════════════════════════════════════════════════";
+ private static final String LEFT_BORDER = "║ ";
private static final String BOTTOM_BORDER = "╚═══════════════════════════════════════════════════════════════════════════════════════════════════";
private static final int MAX_LEN = 4000;
private static final String NULL_TIPS = "Log with null object.";
private static final String NULL = "null";
- private static final String PARAM = "Param";
+ private static final String ARGS = "args";
public static class Builder {
public Builder() {
if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {
- dir = Utils.getContext().getExternalCacheDir().getPath() + File.separator + "log" + File.separator;
+ dir = Utils.getContext().getExternalCacheDir() + File.separator + "log" + File.separator;
} else {
- dir = Utils.getContext().getCacheDir().getPath() + File.separator + "log" + File.separator;
+ dir = Utils.getContext().getCacheDir() + File.separator + "log" + File.separator;
}
}
@@ -190,7 +192,6 @@ public final class LogUtils {
tag = processContents[0];
String head = processContents[1];
String body = processContents[2];
- Log.d("1cmj", body);
switch (type) {
case V:
case D:
@@ -252,7 +253,7 @@ public final class LogUtils {
StringBuilder sb = new StringBuilder();
for (int i = 0, len = contents.length; i < len; ++i) {
Object content = contents[i];
- sb.append(PARAM)
+ sb.append(ARGS)
.append("[")
.append(i)
.append("]")
@@ -263,18 +264,27 @@ public final class LogUtils {
body = sb.toString();
}
}
+ if (sLogBorderSwitch) {
+ StringBuilder sb = new StringBuilder();
+ String[] lines = body.split(LINE_SEPARATOR);
+ for (String line : lines) {
+ sb.append(LEFT_BORDER).append(line).append(LINE_SEPARATOR);
+ }
+ body = sb.substring(2);
+ }
return new String[]{tag, head, body};
}
private static void printLog(int type, String tag, String head, String msg) {
- if (sLogBorderSwitch) printSubLog(type, tag, TOP_BORDER);
+ if (sLogBorderSwitch) printBorder(type, tag, true);
printSubLog(type, tag, head);
int len = msg.length();
int countOfSub = len / MAX_LEN;
if (countOfSub > 0) {
int index = 0;
+ String sub;
for (int i = 0; i < countOfSub; i++) {
- String sub = msg.substring(index, index + MAX_LEN);
+ sub = msg.substring(index, index + MAX_LEN);
printSubLog(type, tag, sub);
index += MAX_LEN;
}
@@ -282,10 +292,11 @@ public final class LogUtils {
} else {
printSubLog(type, tag, msg);
}
- if (sLogBorderSwitch) printSubLog(type, tag, BOTTOM_BORDER);
+ if (sLogBorderSwitch) printBorder(type, tag, false);
}
- private static void printSubLog(int type, final String tag, final String msg) {
+ private static void printSubLog(final int type, final String tag, String msg) {
+ if (sLogBorderSwitch) msg = LEFT_BORDER + msg;
switch (type) {
case V:
Log.v(tag, msg);
@@ -308,6 +319,30 @@ public final class LogUtils {
}
}
+ private static void printBorder(int type, String tag, boolean isTop) {
+ String border = isTop ? TOP_BORDER : BOTTOM_BORDER;
+ switch (type) {
+ case V:
+ Log.v(tag, border);
+ break;
+ case D:
+ Log.d(tag, border);
+ break;
+ case I:
+ Log.i(tag, border);
+ break;
+ case W:
+ Log.w(tag, border);
+ break;
+ case E:
+ Log.e(tag, border);
+ break;
+ case A:
+ Log.wtf(tag, border);
+ break;
+ }
+ }
+
private synchronized static void print2File(int type, String tag, final String head, final String msg) {
boolean isSuccess = false;
Date now = new Date();
@@ -360,9 +395,9 @@ public final class LogUtils {
}
}
if (isSuccess) {
- printSubLog(type, tag, "log to " + fullPath + "success >> ");
+ Log.d(tag, "log to " + fullPath + "success!");
} else {
- printSubLog(type, tag, "log to file failed!");
+ Log.e(tag, "log to " + fullPath + " failed!");
}
}