Java tutorial
/* * Copyright (c) 2013. wyouflf (wyouflf@gmail.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.snicesoft.basekit; import android.text.TextUtils; import android.util.Log; import com.google.gson.Gson; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; /** * Logandroid.util.Log * tag?: customTagPrefix:className.methodName(L:lineNumber), * customTagPrefix?className.methodName(L:lineNumber) * Author: wyouflf * Date: 13-7-24 * Time: ?12:23 */ public class LogKit { public static String customTagPrefix = ""; private LogKit() { } private static Gson gson = new Gson(); public static boolean allowD = true; public static boolean allowE = true; public static boolean allowI = true; public static boolean allowV = true; public static boolean allowW = true; public static boolean allowWtf = true; public static boolean allowJSON = true; private static String generateTag(StackTraceElement caller) { // String tag = "%s.%s(L:%d)"; String tag = "%s.%s(" + caller.getFileName() + ":%d)"; String callerClazzName = caller.getClassName(); callerClazzName = callerClazzName.substring(callerClazzName.lastIndexOf(".") + 1); tag = String.format(tag, callerClazzName, caller.getMethodName(), caller.getLineNumber()); tag = TextUtils.isEmpty(customTagPrefix) ? tag : customTagPrefix + ":" + tag; return tag; } public static StackTraceElement getCallerStackTraceElement() { return Thread.currentThread().getStackTrace()[4]; } public static void d(String content) { if (!allowD) return; StackTraceElement caller = getCallerStackTraceElement(); String tag = generateTag(caller); Log.d(tag, content); } public static void d(String content, Throwable tr) { if (!allowD) return; StackTraceElement caller = getCallerStackTraceElement(); String tag = generateTag(caller); Log.d(tag, content, tr); } public static void e(String content) { if (!allowE) return; StackTraceElement caller = getCallerStackTraceElement(); String tag = generateTag(caller); Log.e(tag, content); } public static void e(String content, Throwable tr) { if (!allowE) return; StackTraceElement caller = getCallerStackTraceElement(); String tag = generateTag(caller); Log.e(tag, content, tr); } public static void i(String content) { if (!allowI) return; StackTraceElement caller = getCallerStackTraceElement(); String tag = generateTag(caller); Log.i(tag, content); } public static void i(String content, Throwable tr) { if (!allowI) return; StackTraceElement caller = getCallerStackTraceElement(); String tag = generateTag(caller); Log.i(tag, content, tr); } public static void v(String content) { if (!allowV) return; StackTraceElement caller = getCallerStackTraceElement(); String tag = generateTag(caller); Log.v(tag, content); } public static void v(String content, Throwable tr) { if (!allowV) return; StackTraceElement caller = getCallerStackTraceElement(); String tag = generateTag(caller); Log.v(tag, content, tr); } public static void w(String content) { if (!allowW) return; StackTraceElement caller = getCallerStackTraceElement(); String tag = generateTag(caller); Log.w(tag, content); } public static void w(String content, Throwable tr) { if (!allowW) return; StackTraceElement caller = getCallerStackTraceElement(); String tag = generateTag(caller); Log.w(tag, content, tr); } public static void w(Throwable tr) { if (!allowW) return; StackTraceElement caller = getCallerStackTraceElement(); String tag = generateTag(caller); Log.w(tag, tr); } public static <T> void json(T t) { if (t == null) return; json(gson.toJson(t)); } public static void json(String content) { if (!allowJSON) return; StackTraceElement caller = getCallerStackTraceElement(); String tag = generateTag(caller); printJSON(tag, content); } public static void wtf(String content) { if (!allowWtf) return; StackTraceElement caller = getCallerStackTraceElement(); String tag = generateTag(caller); Log.wtf(tag, content); } public static void wtf(String content, Throwable tr) { if (!allowWtf) return; StackTraceElement caller = getCallerStackTraceElement(); String tag = generateTag(caller); Log.wtf(tag, content, tr); } public static void wtf(Throwable tr) { if (!allowWtf) return; StackTraceElement caller = getCallerStackTraceElement(); String tag = generateTag(caller); Log.wtf(tag, tr); } private final static String LINE_SEPARATOR = System.getProperty("line.separator"); private final static int JSON_INDENT = 4; private final static String START = "???????????????????????????????????????????????????????????????????????????????????????"; private final static String END = "???????????????????????????????????????????????????????????????????????????????????????"; private static void printJSON(String tag, String msg) { String message = ""; try { if (msg.startsWith("{")) { JSONObject jsonObject = new JSONObject(msg); message = jsonObject.toString(JSON_INDENT); } else if (msg.startsWith("[")) { JSONArray jsonArray = new JSONArray(msg); message = jsonArray.toString(JSON_INDENT); } else { message = msg; } } catch (JSONException e) { message = msg; } Log.d(tag, START); String[] lines = message.split(LINE_SEPARATOR); for (String line : lines) { Log.d(tag, " " + line); } Log.d(tag, END); } }