diff --git a/KLog.iml b/KLog.iml
deleted file mode 100644
index 3f8d60a2494005ba0e243db7e66f926b97518258..0000000000000000000000000000000000000000
--- a/KLog.iml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 474944e38f3a8de1ced7602d97f1189c5f6b5e58..06f33dd7e0bf7b8147cd685f72a340a3be2d9830 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -32,6 +32,6 @@ dependencies {
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.loopj.android:android-async-http:1.4.9'
compile 'cz.msebera.android:httpclient:4.3.6'
- compile 'com.github.zhaokaiqiang.klog:library:1.5.0'
-// compile project(':library')
+// compile 'com.github.zhaokaiqiang.klog:library:1.5.0'
+ compile project(':library')
}
diff --git a/app/src/main/java/com/socks/sample/MainActivity.java b/app/src/main/java/com/socks/sample/MainActivity.java
index 7afa51f4ae41e082ad57abca9bf8e1f516e5b8cf..da8b1d2a7a44c7bdabf2e1c7aa8b24fbee8163fa 100644
--- a/app/src/main/java/com/socks/sample/MainActivity.java
+++ b/app/src/main/java/com/socks/sample/MainActivity.java
@@ -34,8 +34,7 @@ public class MainActivity extends AppCompatActivity {
@Override
public void handleMessage(Message msg) {
- KLog.d("handleMessage");
- handler.sendEmptyMessageDelayed(0, 3000);
+ KLog.d("Inner Class Test");
}
};
@@ -64,6 +63,16 @@ public class MainActivity extends AppCompatActivity {
STRING_LONG = getString(R.string.string_long);
}
+ public void logTraceStack(View view) {
+ TestTraceUtil.testTrace();
+ }
+
+ public void logDebug(View view) {
+ KLog.debug();
+ KLog.debug("This is a debug message");
+ KLog.debug("DEBUG", "params1", "params2", this);
+ }
+
public void log(View view) {
KLog.v();
KLog.d();
diff --git a/app/src/main/java/com/socks/sample/TestTraceUtil.java b/app/src/main/java/com/socks/sample/TestTraceUtil.java
new file mode 100644
index 0000000000000000000000000000000000000000..fadc37a12214e2a6c303575a35665776694ed582
--- /dev/null
+++ b/app/src/main/java/com/socks/sample/TestTraceUtil.java
@@ -0,0 +1,15 @@
+package com.socks.sample;
+
+import com.socks.library.KLog;
+
+/**
+ * Created by zhao on 16/6/16.
+ */
+
+class TestTraceUtil {
+
+ static void testTrace() {
+ KLog.trace();
+ }
+
+}
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index c150029eb7f909c81c327465ee42f638c5447225..82ea20d6828d9964c27b93087ea896f68c556371 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -1,8 +1,8 @@
+ app:theme="@style/ToolbarTheme" />
+
+
+
+
diff --git a/build.gradle b/build.gradle
index 1d610c866dd3e730b1ea1757a03f5cba3459ec07..e032d6414dbe297769498dff3b70fd640c491ae5 100644
--- a/build.gradle
+++ b/build.gradle
@@ -5,9 +5,9 @@ buildscript {
jcenter()
}
dependencies {
- classpath 'com.android.tools.build:gradle:2.2.0-alpha3'
+ classpath 'com.android.tools.build:gradle:2.2.2'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0'
- classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3'
+ classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 654352e17809946707b4f84706207239f4c4bce9..73282f067b4270e81800e757910da5929e2a932b 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Sun Jun 12 23:20:37 CST 2016
+#Fri Sep 09 19:39:04 CST 2016
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
diff --git a/library/src/main/java/com/socks/library/KLog.java b/library/src/main/java/com/socks/library/KLog.java
index 60536ec3ebd4776cc0c8cfb5ffa46b03257f2f30..4245803c9abd0f789667b342ef1bbe9bc5c24068 100644
--- a/library/src/main/java/com/socks/library/KLog.java
+++ b/library/src/main/java/com/socks/library/KLog.java
@@ -10,6 +10,8 @@ import com.socks.library.klog.JsonLog;
import com.socks.library.klog.XmlLog;
import java.io.File;
+import java.io.PrintWriter;
+import java.io.StringWriter;
/**
* This is a Log tool,with this you can the following
@@ -25,9 +27,11 @@ import java.io.File;
* 15/11/18 扩展功能,增加对XML的支持,修复BUG
* 15/12/8 扩展功能,添加对任意参数的支持
* 15/12/11 扩展功能,增加对无限长字符串支持
- * 16/6/13 扩展功能,添加对自定义全局Tag的支持
+ * 16/6/13 扩展功能,添加对自定义全局Tag的支持,修复内部类不能点击跳转的BUG
+ * 16/6/15 扩展功能,添加不能关闭的KLog.debug(),用于发布版本的Log打印,优化部分代码
+ * 16/6/20 扩展功能,添加堆栈跟踪功能KLog.trace()
*/
-public class KLog {
+public final class KLog {
public static final String LINE_SEPARATOR = System.getProperty("line.separator");
public static final String NULL_TIPS = "Log with null object";
@@ -39,8 +43,8 @@ public class KLog {
private static final String SUFFIX = ".java";
public static final int JSON_INDENT = 4;
- public static final int V = 0x1;
+ public static final int V = 0x1;
public static final int D = 0x2;
public static final int I = 0x3;
public static final int W = 0x4;
@@ -50,7 +54,8 @@ public class KLog {
private static final int JSON = 0x7;
private static final int XML = 0x8;
- private static final int STACK_TRACE_INDEX = 5;
+ private static final int STACK_TRACE_INDEX_5 = 5;
+ private static final int STACK_TRACE_INDEX_4 = 4;
private static String mGlobalTag;
private static boolean mIsGlobalTagEmpty = true;
@@ -166,13 +171,58 @@ public class KLog {
printFile(tag, targetDirectory, fileName, msg);
}
+ public static void debug() {
+ printDebug(null, DEFAULT_MESSAGE);
+ }
+
+ public static void debug(Object msg) {
+ printDebug(null, msg);
+ }
+
+ public static void debug(String tag, Object... objects) {
+ printDebug(tag, objects);
+ }
+
+ public static void trace() {
+ printStackTrace();
+ }
+
+ private static void printStackTrace() {
+
+ if (!IS_SHOW_LOG) {
+ return;
+ }
+
+ Throwable tr = new Throwable();
+ StringWriter sw = new StringWriter();
+ PrintWriter pw = new PrintWriter(sw);
+ tr.printStackTrace(pw);
+ pw.flush();
+ String message = sw.toString();
+
+ String traceString[] = message.split("\\n\\t");
+ StringBuilder sb = new StringBuilder();
+ sb.append("\n");
+ for (String trace : traceString) {
+ if (trace.contains("at com.socks.library.KLog")) {
+ continue;
+ }
+ sb.append(trace).append("\n");
+ }
+ String[] contents = wrapperContent(STACK_TRACE_INDEX_4, null, sb.toString());
+ String tag = contents[0];
+ String msg = contents[1];
+ String headString = contents[2];
+ BaseLog.printDefault(D, tag, headString + msg);
+ }
+
private static void printLog(int type, String tagStr, Object... objects) {
if (!IS_SHOW_LOG) {
return;
}
- String[] contents = wrapperContent(tagStr, objects);
+ String[] contents = wrapperContent(STACK_TRACE_INDEX_5, tagStr, objects);
String tag = contents[0];
String msg = contents[1];
String headString = contents[2];
@@ -193,6 +243,15 @@ public class KLog {
XmlLog.printXml(tag, msg, headString);
break;
}
+
+ }
+
+ private static void printDebug(String tagStr, Object... objects) {
+ String[] contents = wrapperContent(STACK_TRACE_INDEX_5, tagStr, objects);
+ String tag = contents[0];
+ String msg = contents[1];
+ String headString = contents[2];
+ BaseLog.printDefault(D, tag, headString + msg);
}
@@ -202,7 +261,7 @@ public class KLog {
return;
}
- String[] contents = wrapperContent(tagStr, objectMsg);
+ String[] contents = wrapperContent(STACK_TRACE_INDEX_5, tagStr, objectMsg);
String tag = contents[0];
String msg = contents[1];
String headString = contents[2];
@@ -210,11 +269,11 @@ public class KLog {
FileLog.printFile(tag, targetDirectory, fileName, headString, msg);
}
- private static String[] wrapperContent(String tagStr, Object... objects) {
+ private static String[] wrapperContent(int stackTraceIndex, String tagStr, Object... objects) {
StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
- StackTraceElement targetElement = stackTrace[STACK_TRACE_INDEX];
+ StackTraceElement targetElement = stackTrace[stackTraceIndex];
String className = targetElement.getClassName();
String[] classNameInfo = className.split("\\.");
if (classNameInfo.length > 0) {
@@ -232,8 +291,6 @@ public class KLog {
lineNumber = 0;
}
- String methodNameShort = methodName.substring(0, 1).toUpperCase() + methodName.substring(1);
-
String tag = (tagStr == null ? className : tagStr);
if (mIsGlobalTagEmpty && TextUtils.isEmpty(tag)) {
@@ -243,7 +300,7 @@ public class KLog {
}
String msg = (objects == null) ? NULL_TIPS : getObjectsString(objects);
- String headString = "[ (" + className + ":" + lineNumber + ")#" + methodNameShort + " ] ";
+ String headString = "[ (" + className + ":" + lineNumber + ")#" + methodName + " ] ";
return new String[]{tag, msg, headString};
}
diff --git a/library/src/main/java/com/socks/library/Util.java b/library/src/main/java/com/socks/library/KLogUtil.java
similarity index 97%
rename from library/src/main/java/com/socks/library/Util.java
rename to library/src/main/java/com/socks/library/KLogUtil.java
index 2d720b69c3fc9c2b179a598e012811a52cc80846..8713dee15a283b5dc2ea8ed3815d8d945104d736 100644
--- a/library/src/main/java/com/socks/library/Util.java
+++ b/library/src/main/java/com/socks/library/KLogUtil.java
@@ -6,7 +6,7 @@ import android.util.Log;
/**
* Created by zhaokaiqiang on 15/12/11.
*/
-public class Util {
+public class KLogUtil {
public static boolean isEmpty(String line) {
return TextUtils.isEmpty(line) || line.equals("\n") || line.equals("\t") || TextUtils.isEmpty(line.trim());
diff --git a/library/src/main/java/com/socks/library/klog/BaseLog.java b/library/src/main/java/com/socks/library/klog/BaseLog.java
index d0ce04d732035eb3a15cdf7b606177817f69cadc..4000a98efdbd0d8aa4da0ab6fb27b6b60f486331 100644
--- a/library/src/main/java/com/socks/library/klog/BaseLog.java
+++ b/library/src/main/java/com/socks/library/klog/BaseLog.java
@@ -9,19 +9,21 @@ import com.socks.library.KLog;
*/
public class BaseLog {
+ private static final int MAX_LENGTH = 4000;
+
public static void printDefault(int type, String tag, String msg) {
int index = 0;
- int maxLength = 4000;
- int countOfSub = msg.length() / maxLength;
+ int length = msg.length();
+ int countOfSub = length / MAX_LENGTH;
if (countOfSub > 0) {
for (int i = 0; i < countOfSub; i++) {
- String sub = msg.substring(index, index + maxLength);
+ String sub = msg.substring(index, index + MAX_LENGTH);
printSub(type, tag, sub);
- index += maxLength;
+ index += MAX_LENGTH;
}
- printSub(type, tag, msg.substring(index, msg.length()));
+ printSub(type, tag, msg.substring(index, length));
} else {
printSub(type, tag, msg);
}
diff --git a/library/src/main/java/com/socks/library/klog/FileLog.java b/library/src/main/java/com/socks/library/klog/FileLog.java
index f9cf0979c11cbcacaba124c7afda12e915089d7c..6229207006c1ba15f0735b228e37656f3a758caa 100644
--- a/library/src/main/java/com/socks/library/klog/FileLog.java
+++ b/library/src/main/java/com/socks/library/klog/FileLog.java
@@ -1,5 +1,7 @@
package com.socks.library.klog;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
import android.util.Log;
import java.io.File;
@@ -16,7 +18,10 @@ import java.util.Random;
*/
public class FileLog {
- public static void printFile(String tag, File targetDirectory, String fileName, String headString, String msg) {
+ private static final String FILE_PREFIX = "KLog_";
+ private static final String FILE_FORMAT = ".log";
+
+ public static void printFile(String tag, File targetDirectory, @Nullable String fileName, String headString, String msg) {
fileName = (fileName == null) ? getFileName() : fileName;
if (save(targetDirectory, fileName, msg)) {
@@ -26,7 +31,7 @@ public class FileLog {
}
}
- private static boolean save(File dic, String fileName, String msg) {
+ private static boolean save(File dic, @NonNull String fileName, String msg) {
File file = new File(dic, fileName);
@@ -36,6 +41,7 @@ public class FileLog {
outputStreamWriter.write(msg);
outputStreamWriter.flush();
outputStream.close();
+ return true;
} catch (FileNotFoundException e) {
e.printStackTrace();
return false;
@@ -50,12 +56,11 @@ public class FileLog {
return false;
}
- return true;
}
private static String getFileName() {
Random random = new Random();
- return "KLog_" + Long.toString(System.currentTimeMillis() + random.nextInt(10000)).substring(4) + ".txt";
+ return FILE_PREFIX + Long.toString(System.currentTimeMillis() + random.nextInt(10000)).substring(4) + FILE_FORMAT;
}
}
diff --git a/library/src/main/java/com/socks/library/klog/JsonLog.java b/library/src/main/java/com/socks/library/klog/JsonLog.java
index b1cc7700bf91a4093476c3e4f3a28bd6651eb21c..06974151e47a9a187046102448e1be72ba30fad4 100644
--- a/library/src/main/java/com/socks/library/klog/JsonLog.java
+++ b/library/src/main/java/com/socks/library/klog/JsonLog.java
@@ -3,7 +3,7 @@ package com.socks.library.klog;
import android.util.Log;
import com.socks.library.KLog;
-import com.socks.library.Util;
+import com.socks.library.KLogUtil;
import org.json.JSONArray;
import org.json.JSONException;
@@ -32,12 +32,12 @@ public class JsonLog {
message = msg;
}
- Util.printLine(tag, true);
+ KLogUtil.printLine(tag, true);
message = headString + KLog.LINE_SEPARATOR + message;
String[] lines = message.split(KLog.LINE_SEPARATOR);
for (String line : lines) {
Log.d(tag, "║ " + line);
}
- Util.printLine(tag, false);
+ KLogUtil.printLine(tag, false);
}
}
diff --git a/library/src/main/java/com/socks/library/klog/XmlLog.java b/library/src/main/java/com/socks/library/klog/XmlLog.java
index 7fc4162518e412ed3f633dfa645eeeab3454db3a..cf4470008c4ffcf82115098c0cfb5db1eb4cebf9 100644
--- a/library/src/main/java/com/socks/library/klog/XmlLog.java
+++ b/library/src/main/java/com/socks/library/klog/XmlLog.java
@@ -4,7 +4,7 @@ import android.util.Log;
import com.socks.library.KLog;
-import com.socks.library.Util;
+import com.socks.library.KLogUtil;
import java.io.StringReader;
import java.io.StringWriter;
@@ -30,17 +30,17 @@ public class XmlLog {
xml = headString + KLog.NULL_TIPS;
}
- Util.printLine(tag, true);
+ KLogUtil.printLine(tag, true);
String[] lines = xml.split(KLog.LINE_SEPARATOR);
for (String line : lines) {
- if (!Util.isEmpty(line)) {
+ if (!KLogUtil.isEmpty(line)) {
Log.d(tag, "║ " + line);
}
}
- Util.printLine(tag, false);
+ KLogUtil.printLine(tag, false);
}
- public static String formatXML(String inputXML) {
+ private static String formatXML(String inputXML) {
try {
Source xmlInput = new StreamSource(new StringReader(inputXML));
StreamResult xmlOutput = new StreamResult(new StringWriter());