提交 87a39a64 编写于 作者: B Blankj

see 04/03 log

上级 ace742f4
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
[logo]: https://raw.githubusercontent.com/Blankj/AndroidUtilCode/master/art/logo.png [logo]: https://raw.githubusercontent.com/Blankj/AndroidUtilCode/master/art/logo.png
[aucsvg]: https://img.shields.io/badge/AndroidUtilCode-v1.13.6-brightgreen.svg [aucsvg]: https://img.shields.io/badge/AndroidUtilCode-v1.13.7-brightgreen.svg
[auc]: https://github.com/Blankj/AndroidUtilCode [auc]: https://github.com/Blankj/AndroidUtilCode
[apisvg]: https://img.shields.io/badge/API-14+-brightgreen.svg [apisvg]: https://img.shields.io/badge/API-14+-brightgreen.svg
......
...@@ -41,7 +41,7 @@ If this ptoject helps you a lot, and you would like to support this ptoject's fu ...@@ -41,7 +41,7 @@ If this ptoject helps you a lot, and you would like to support this ptoject's fu
[logo]: https://raw.githubusercontent.com/Blankj/AndroidUtilCode/master/art/logo.png [logo]: https://raw.githubusercontent.com/Blankj/AndroidUtilCode/master/art/logo.png
[aucsvg]: https://img.shields.io/badge/AndroidUtilCode-v1.13.6-brightgreen.svg [aucsvg]: https://img.shields.io/badge/AndroidUtilCode-v1.13.7-brightgreen.svg
[auc]: https://github.com/Blankj/AndroidUtilCode [auc]: https://github.com/Blankj/AndroidUtilCode
[apisvg]: https://img.shields.io/badge/API-14+-brightgreen.svg [apisvg]: https://img.shields.io/badge/API-14+-brightgreen.svg
......
...@@ -56,7 +56,7 @@ dependencies { ...@@ -56,7 +56,7 @@ dependencies {
// LeakCanary // LeakCanary
debugImplementation "com.squareup.leakcanary:leakcanary-android:$leakcanary_version" debugImplementation "com.squareup.leakcanary:leakcanary-android:$leakcanary_version"
releaseImplementation "com.squareup.leakcanary:leakcanary-android-no-op:$leakcanary_version" releaseImplementation "com.squareup.leakcanary:leakcanary-android-no-op:$leakcanary_version"
// implementation 'com.blankj:utilcode:1.13.6' // implementation 'com.blankj:utilcode:1.13.7'
} }
...@@ -62,9 +62,10 @@ public class UtilsApp extends BaseApplication { ...@@ -62,9 +62,10 @@ public class UtilsApp extends BaseApplication {
.setDir("")// 当自定义路径为空时,写入应用的/cache/log/目录中 .setDir("")// 当自定义路径为空时,写入应用的/cache/log/目录中
.setFilePrefix("")// 当文件前缀为空时,默认为"util",即写入文件为"util-MM-dd.txt" .setFilePrefix("")// 当文件前缀为空时,默认为"util",即写入文件为"util-MM-dd.txt"
.setBorderSwitch(true)// 输出日志是否带边框开关,默认开 .setBorderSwitch(true)// 输出日志是否带边框开关,默认开
.setSingleTagSwitch(true)// 一条日志仅输出一条,默认开,为美化 AS 3.1 的 Logcat
.setConsoleFilter(LogUtils.V)// log 的控制台过滤器,和 logcat 过滤器同理,默认 Verbose .setConsoleFilter(LogUtils.V)// log 的控制台过滤器,和 logcat 过滤器同理,默认 Verbose
.setFileFilter(LogUtils.V)// log 文件过滤器,和 logcat 过滤器同理,默认 Verbose .setFileFilter(LogUtils.V)// log 文件过滤器,和 logcat 过滤器同理,默认 Verbose
.setStackDeep(10);// log 栈深度,默认为 1 .setStackDeep(1);// log 栈深度,默认为 1
new Thread(new Runnable() { new Thread(new Runnable() {
@Override @Override
public void run() { public void run() {
......
...@@ -36,6 +36,7 @@ public class LogActivity extends BaseBackActivity { ...@@ -36,6 +36,7 @@ public class LogActivity extends BaseBackActivity {
private boolean head = true; private boolean head = true;
private boolean file = false; private boolean file = false;
private boolean border = true; private boolean border = true;
private boolean single = true;
private int consoleFilter = LogUtils.V; private int consoleFilter = LogUtils.V;
private int fileFilter = LogUtils.V; private int fileFilter = LogUtils.V;
...@@ -46,8 +47,9 @@ public class LogActivity extends BaseBackActivity { ...@@ -46,8 +47,9 @@ public class LogActivity extends BaseBackActivity {
private static final int UPDATE_FILE = 0x01 << 4; private static final int UPDATE_FILE = 0x01 << 4;
private static final int UPDATE_DIR = 0x01 << 5; private static final int UPDATE_DIR = 0x01 << 5;
private static final int UPDATE_BORDER = 0x01 << 6; private static final int UPDATE_BORDER = 0x01 << 6;
private static final int UPDATE_CONSOLE_FILTER = 0x01 << 7; private static final int UPDATE_SINGLE = 0x01 << 7;
private static final int UPDATE_FILE_FILTER = 0x01 << 8; private static final int UPDATE_CONSOLE_FILTER = 0x01 << 8;
private static final int UPDATE_FILE_FILTER = 0x01 << 9;
private Runnable mRunnable = new Runnable() { private Runnable mRunnable = new Runnable() {
@Override @Override
...@@ -98,6 +100,7 @@ public class LogActivity extends BaseBackActivity { ...@@ -98,6 +100,7 @@ public class LogActivity extends BaseBackActivity {
findViewById(R.id.btn_toggle_tag).setOnClickListener(this); findViewById(R.id.btn_toggle_tag).setOnClickListener(this);
findViewById(R.id.btn_toggle_head).setOnClickListener(this); findViewById(R.id.btn_toggle_head).setOnClickListener(this);
findViewById(R.id.btn_toggle_border).setOnClickListener(this); findViewById(R.id.btn_toggle_border).setOnClickListener(this);
findViewById(R.id.btn_toggle_single).setOnClickListener(this);
findViewById(R.id.btn_toggle_file).setOnClickListener(this); findViewById(R.id.btn_toggle_file).setOnClickListener(this);
findViewById(R.id.btn_toggle_dir).setOnClickListener(this); findViewById(R.id.btn_toggle_dir).setOnClickListener(this);
findViewById(R.id.btn_toggle_conole_filter).setOnClickListener(this); findViewById(R.id.btn_toggle_conole_filter).setOnClickListener(this);
...@@ -143,6 +146,9 @@ public class LogActivity extends BaseBackActivity { ...@@ -143,6 +146,9 @@ public class LogActivity extends BaseBackActivity {
case R.id.btn_toggle_border: case R.id.btn_toggle_border:
updateConfig(UPDATE_BORDER); updateConfig(UPDATE_BORDER);
break; break;
case R.id.btn_toggle_single:
updateConfig(UPDATE_SINGLE);
break;
case R.id.btn_toggle_conole_filter: case R.id.btn_toggle_conole_filter:
updateConfig(UPDATE_CONSOLE_FILTER); updateConfig(UPDATE_CONSOLE_FILTER);
break; break;
...@@ -242,6 +248,9 @@ public class LogActivity extends BaseBackActivity { ...@@ -242,6 +248,9 @@ public class LogActivity extends BaseBackActivity {
case UPDATE_BORDER: case UPDATE_BORDER:
border = !border; border = !border;
break; break;
case UPDATE_SINGLE:
single = !single;
break;
case UPDATE_CONSOLE_FILTER: case UPDATE_CONSOLE_FILTER:
consoleFilter = consoleFilter == LogUtils.V ? LogUtils.W : LogUtils.V; consoleFilter = consoleFilter == LogUtils.V ? LogUtils.W : LogUtils.V;
break; break;
...@@ -256,6 +265,7 @@ public class LogActivity extends BaseBackActivity { ...@@ -256,6 +265,7 @@ public class LogActivity extends BaseBackActivity {
.setLog2FileSwitch(file) .setLog2FileSwitch(file)
.setDir(dir) .setDir(dir)
.setBorderSwitch(border) .setBorderSwitch(border)
.setSingleTagSwitch(single)
.setConsoleFilter(consoleFilter) .setConsoleFilter(consoleFilter)
.setFileFilter(fileFilter); .setFileFilter(fileFilter);
tvAboutLog.setText(mConfig.toString()); tvAboutLog.setText(mConfig.toString());
......
...@@ -62,6 +62,13 @@ ...@@ -62,6 +62,13 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/log_toggle_border" /> android:text="@string/log_toggle_border" />
<Button
android:id="@+id/btn_toggle_single"
style="@style/WideBtnStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/log_toggle_single" />
<Button <Button
android:id="@+id/btn_toggle_conole_filter" android:id="@+id/btn_toggle_conole_filter"
style="@style/WideBtnStyle" style="@style/WideBtnStyle"
......
...@@ -176,6 +176,7 @@ ...@@ -176,6 +176,7 @@
<string name="log_toggle_tag">Toggle Tag</string> <string name="log_toggle_tag">Toggle Tag</string>
<string name="log_toggle_head">Toggle Head</string> <string name="log_toggle_head">Toggle Head</string>
<string name="log_toggle_border">Toggle Border</string> <string name="log_toggle_border">Toggle Border</string>
<string name="log_toggle_single">Toggle Single</string>
<string name="log_toggle_console_filter">Toggle Console Filter</string> <string name="log_toggle_console_filter">Toggle Console Filter</string>
<string name="log_toggle_file_filter">Toggle File Filter</string> <string name="log_toggle_file_filter">Toggle File Filter</string>
<string name="log_toggle_file">Toggle File</string> <string name="log_toggle_file">Toggle File</string>
......
...@@ -33,8 +33,8 @@ ext { ...@@ -33,8 +33,8 @@ ext {
min_sdk_version = 14 min_sdk_version = 14
target_sdk_version = 27 target_sdk_version = 27
version_code = 1_013_006 version_code = 1_013_007
version_name = '1.13.6'// E.g 1.9.72 => 1,009,072 version_name = '1.13.7'// E.g 1.9.72 => 1,009,072
// App dependencies // App dependencies
support_version = '27.0.2' support_version = '27.0.2'
......
* 18/04/03 修复 LogUtils 在 Android Studio 3.1 版本日志丑陋的问题,发布 1.13.7 版本
* 18/03/29 兼容 Utils 的初始化传入 application,发布 1.13.6 版本 * 18/03/29 兼容 Utils 的初始化传入 application,发布 1.13.6 版本
* 18/03/20 修复 PermissionUtils 子进程的问题,发布 1.13.5 版本 * 18/03/20 修复 PermissionUtils 子进程的问题,发布 1.13.5 版本
* 18/03/16 新增 gradle 插件来格式化 README * 18/03/16 新增 gradle 插件来格式化 README
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
Gradle: Gradle:
```groovy ```groovy
compile 'com.blankj:utilcode:1.13.6' compile 'com.blankj:utilcode:1.13.7'
``` ```
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
Gradle: Gradle:
```groovy ```groovy
compile 'com.blankj:utilcode:1.13.6' compile 'com.blankj:utilcode:1.13.7'
``` ```
......
...@@ -77,12 +77,13 @@ public final class LogUtils { ...@@ -77,12 +77,13 @@ public final class LogUtils {
private static final String TOP_BORDER = TOP_CORNER + SIDE_DIVIDER + SIDE_DIVIDER; private static final String TOP_BORDER = TOP_CORNER + SIDE_DIVIDER + SIDE_DIVIDER;
private static final String MIDDLE_BORDER = MIDDLE_CORNER + MIDDLE_DIVIDER + MIDDLE_DIVIDER; private static final String MIDDLE_BORDER = MIDDLE_CORNER + MIDDLE_DIVIDER + MIDDLE_DIVIDER;
private static final String BOTTOM_BORDER = BOTTOM_CORNER + SIDE_DIVIDER + SIDE_DIVIDER; private static final String BOTTOM_BORDER = BOTTOM_CORNER + SIDE_DIVIDER + SIDE_DIVIDER;
private static final int MAX_LEN = 4000; private static final int MAX_LEN = 3000;
@SuppressLint("SimpleDateFormat") @SuppressLint("SimpleDateFormat")
private static final Format FORMAT = new SimpleDateFormat("MM-dd HH:mm:ss.SSS "); private static final Format FORMAT = new SimpleDateFormat("MM-dd HH:mm:ss.SSS ");
private static final String NOTHING = "log nothing"; private static final String NOTHING = "log nothing";
private static final String NULL = "null"; private static final String NULL = "null";
private static final String ARGS = "args"; private static final String ARGS = "args";
private static final String PLACEHOLDER = " ";
private static final Config CONFIG = new Config(); private static final Config CONFIG = new Config();
private static ExecutorService sExecutor; private static ExecutorService sExecutor;
...@@ -96,10 +97,12 @@ public final class LogUtils { ...@@ -96,10 +97,12 @@ public final class LogUtils {
private static boolean sLogHeadSwitch = true; // The head's switch of log. private static boolean sLogHeadSwitch = true; // The head's switch of log.
private static boolean sLog2FileSwitch = false; // The file's switch of log. private static boolean sLog2FileSwitch = false; // The file's switch of log.
private static boolean sLogBorderSwitch = true; // The border's switch of log. private static boolean sLogBorderSwitch = true; // The border's switch of log.
private static boolean sSingleTagSwitch = true; // The single tag of log.
private static int sConsoleFilter = V; // The console's filter of log. private static int sConsoleFilter = V; // The console's filter of log.
private static int sFileFilter = V; // The file's filter of log. private static int sFileFilter = V; // The file's filter of log.
private static int sStackDeep = 1; // The stack's deep of log. private static int sStackDeep = 1; // The stack's deep of log.
private LogUtils() { private LogUtils() {
throw new UnsupportedOperationException("u can't instantiate me..."); throw new UnsupportedOperationException("u can't instantiate me...");
} }
...@@ -344,31 +347,32 @@ public final class LogUtils { ...@@ -344,31 +347,32 @@ public final class LogUtils {
final String tag, final String tag,
final String[] head, final String[] head,
final String msg) { final String msg) {
StringBuilder sb = new StringBuilder(); if (sSingleTagSwitch) {
sb.append(" ").append(LINE_SEP); StringBuilder sb = new StringBuilder();
if (sLogBorderSwitch) { sb.append(PLACEHOLDER).append(LINE_SEP);
sb.append(TOP_BORDER).append(LINE_SEP); if (sLogBorderSwitch) {
for (String aHead : head) { sb.append(TOP_BORDER).append(LINE_SEP);
sb.append(LEFT_BORDER).append(aHead).append(LINE_SEP); for (String aHead : head) {
} sb.append(LEFT_BORDER).append(aHead).append(LINE_SEP);
sb.append(MIDDLE_BORDER).append(LINE_SEP); }
for (String line : msg.split(LINE_SEP)) { sb.append(MIDDLE_BORDER).append(LINE_SEP);
sb.append(LEFT_BORDER).append(line).append(LINE_SEP); for (String line : msg.split(LINE_SEP)) {
sb.append(LEFT_BORDER).append(line).append(LINE_SEP);
}
sb.append(BOTTOM_BORDER);
} else {
for (String aHead : head) {
sb.append(aHead).append(LINE_SEP);
}
sb.append(msg);
} }
sb.append(BOTTOM_BORDER); printMsgSingleTag(type, tag, sb.toString());
} else { } else {
for (String aHead : head) { printBorder(type, tag, true);
sb.append(aHead).append(LINE_SEP); printHead(type, tag, head);
} printMsg(type, tag, msg);
sb.append(msg); printBorder(type, tag, false);
} }
printMsg1(type, tag, sb.toString());
//
// printBorder(type, tag, true);
// printHead(type, tag, head);
// printMsg(type, tag, msg);
// printBorder(type, tag, false);
} }
private static void printBorder(final int type, final String tag, boolean isTop) { private static void printBorder(final int type, final String tag, boolean isTop) {
...@@ -403,17 +407,32 @@ public final class LogUtils { ...@@ -403,17 +407,32 @@ public final class LogUtils {
} }
} }
private static void printMsg1(final int type, final String tag, final String msg) { private static void printMsgSingleTag(final int type, final String tag, final String msg) {
int len = msg.length(); int len = msg.length();
int countOfSub = len / MAX_LEN; int countOfSub = len / MAX_LEN;
if (countOfSub > 0) { if (countOfSub > 0) {
int index = 0; if (sLogBorderSwitch) {
for (int i = 0; i < countOfSub; i++) { Log.println(type, tag, msg.substring(0, MAX_LEN) + LINE_SEP + BOTTOM_BORDER);
Log.println(type, tag, msg.substring(index, index + MAX_LEN)); int index = MAX_LEN;
index += MAX_LEN; for (int i = 1; i < countOfSub; i++) {
} Log.println(type, tag, PLACEHOLDER + LINE_SEP + TOP_BORDER + LINE_SEP
if (index != len) { + LEFT_BORDER + msg.substring(index, index + MAX_LEN)
Log.println(type, tag, msg.substring(index, len)); + LINE_SEP + BOTTOM_BORDER);
index += MAX_LEN;
}
if (index != len) {
Log.println(type, tag, PLACEHOLDER + LINE_SEP + TOP_BORDER + LINE_SEP
+ LEFT_BORDER + msg.substring(index, len));
}
} else {
int index = 0;
for (int i = 0; i < countOfSub; i++) {
Log.println(type, tag, msg.substring(index, index + MAX_LEN));
index += MAX_LEN;
}
if (index != len) {
Log.println(type, tag, msg.substring(index, len));
}
} }
} else { } else {
Log.println(type, tag, msg); Log.println(type, tag, msg);
...@@ -629,6 +648,11 @@ public final class LogUtils { ...@@ -629,6 +648,11 @@ public final class LogUtils {
return this; return this;
} }
public Config setSingleTagSwitch(final boolean singleTagSwitch) {
sSingleTagSwitch = singleTagSwitch;
return this;
}
public Config setConsoleFilter(@TYPE final int consoleFilter) { public Config setConsoleFilter(@TYPE final int consoleFilter) {
sConsoleFilter = consoleFilter; sConsoleFilter = consoleFilter;
return this; return this;
...@@ -654,6 +678,7 @@ public final class LogUtils { ...@@ -654,6 +678,7 @@ public final class LogUtils {
+ LINE_SEP + "dir: " + (sDir == null ? sDefaultDir : sDir) + LINE_SEP + "dir: " + (sDir == null ? sDefaultDir : sDir)
+ LINE_SEP + "filePrefix: " + sFilePrefix + LINE_SEP + "filePrefix: " + sFilePrefix
+ LINE_SEP + "border: " + sLogBorderSwitch + LINE_SEP + "border: " + sLogBorderSwitch
+ LINE_SEP + "singleTag: " + sSingleTagSwitch
+ LINE_SEP + "consoleFilter: " + T[sConsoleFilter - V] + LINE_SEP + "consoleFilter: " + T[sConsoleFilter - V]
+ LINE_SEP + "fileFilter: " + T[sFileFilter - V] + LINE_SEP + "fileFilter: " + T[sFileFilter - V]
+ LINE_SEP + "stackDeep: " + sStackDeep; + LINE_SEP + "stackDeep: " + sStackDeep;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册