/* * Copyright (C) 2012 www.amsoft.cn * * 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.ab.util; import java.util.Calendar; import java.util.Locale; import android.content.Context; import android.util.Log; // TODO: Auto-generated Javadoc /** * © 2012 amsoft.cn * 名称:AbLogUtil.java * 描述:日志工具类. * * @author 还如一梦中 * @version v1.0 * @date:2014-06-26 下午11:52:13 */ public class AbLogUtil { /** debug开关. */ public static boolean D = true; /** info开关. */ public static boolean I = true; /** error开关. */ public static boolean E = true; /** 起始执行时间. */ public static long startLogTimeInMillis = 0; /** * debug日志 * @param tag * @param message */ public static void d(String tag,String message) { if(D) Log.d(tag, message); } /** * debug日志 * @param context * @param message */ public static void d(Context context,String message) { String tag = context.getClass().getSimpleName(); d(tag, message); } /** * debug日志 * @param clazz * @param message */ public static void d(Class<?> clazz,String message) { String tag = clazz.getSimpleName(); d(tag, message); } /** * debug日志 * @param context * @param format * @param args */ public static void d(Context context,String format, Object... args) { String tag = context.getClass().getSimpleName(); d(tag, buildMessage(format, args)); } /** * debug日志 * @param clazz * @param format * @param args */ public static void d(Class<?> clazz,String format, Object... args) { String tag = clazz.getSimpleName(); d(tag, buildMessage(format, args)); } /** * info日志 * @param tag * @param message */ public static void i(String tag,String message) { Log.i(tag, message); } /** * info日志 * @param context * @param message */ public static void i(Context context,String message) { String tag = context.getClass().getSimpleName(); i(tag, message); } /** * info日志 * @param clazz * @param message */ public static void i(Class<?> clazz,String message) { String tag = clazz.getSimpleName(); i(tag, message); } /** * info日志 * @param context * @param format * @param args */ public static void i(Context context,String format, Object... args) { String tag = context.getClass().getSimpleName(); i(tag, buildMessage(format, args)); } /** * info日志 * @param clazz * @param format * @param args */ public static void i(Class<?> clazz,String format, Object... args) { String tag = clazz.getSimpleName(); i(tag, buildMessage(format, args)); } /** * error日志 * @param tag * @param message */ public static void e(String tag,String message) { Log.e(tag, message); } /** * error日志 * @param context * @param message */ public static void e(Context context,String message) { String tag = context.getClass().getSimpleName(); e(tag, message); } /** * error日志 * @param clazz * @param message */ public static void e(Class<?> clazz,String message) { String tag = clazz.getSimpleName(); e(tag, message); } /** * error日志 * @param context * @param format * @param args */ public static void e(Context context,String format, Object... args) { String tag = context.getClass().getSimpleName(); e(tag, buildMessage(format, args)); } /** * error日志 * @param clazz * @param format * @param args */ public static void e(Class<?> clazz,String format, Object... args) { String tag = clazz.getSimpleName(); e(tag, buildMessage(format, args)); } /** * 描述:记录当前时间毫秒. * */ public static void prepareLog(String tag) { Calendar current = Calendar.getInstance(); startLogTimeInMillis = current.getTimeInMillis(); Log.d(tag,"日志计时开始:"+startLogTimeInMillis); } /** * 描述:记录当前时间毫秒. * */ public static void prepareLog(Context context) { String tag = context.getClass().getSimpleName(); prepareLog(tag); } /** * 描述:记录当前时间毫秒. * */ public static void prepareLog(Class<?> clazz) { String tag = clazz.getSimpleName(); prepareLog(tag); } /** * 描述:打印这次的执行时间毫秒,需要首先调用prepareLog(). * * @param tag 标记 * @param message 描述 * @param printTime 是否打印时间 */ public static void d(String tag, String message,boolean printTime) { Calendar current = Calendar.getInstance(); long endLogTimeInMillis = current.getTimeInMillis(); Log.d(tag,message+":"+(endLogTimeInMillis-startLogTimeInMillis)+"ms"); } /** * 描述:打印这次的执行时间毫秒,需要首先调用prepareLog(). * * @param tag 标记 * @param message 描述 * @param printTime 是否打印时间 */ public static void d(Context context,String message,boolean printTime) { String tag = context.getClass().getSimpleName(); d(tag,message,printTime); } /** * 描述:打印这次的执行时间毫秒,需要首先调用prepareLog(). * * @param clazz 标记 * @param message 描述 * @param printTime 是否打印时间 */ public static void d(Class<?> clazz,String message,boolean printTime) { String tag = clazz.getSimpleName(); d(tag,message,printTime); } /** * debug日志的开关 * @param d */ public static void debug(boolean d) { D = d; } /** * info日志的开关 * @param i */ public static void info(boolean i) { I = i; } /** * error日志的开关 * @param e */ public static void error(boolean e) { E = e; } /** * 设置日志的开关 * @param e */ public static void setVerbose(boolean d,boolean i,boolean e) { D = d; I = i; E = e; } /** * 打开所有日志,默认全打开 * @param d */ public static void openAll() { D = true; I = true; E = true; } /** * 关闭所有日志 * @param d */ public static void closeAll() { D = false; I = false; E = false; } /** * format日志 * @param format * @param args * @return */ private static String buildMessage(String format, Object... args) { String msg = (args == null) ? format : String.format(Locale.US, format, args); StackTraceElement[] trace = new Throwable().fillInStackTrace().getStackTrace(); String caller = "<unknown>"; for (int i = 2; i < trace.length; i++) { Class<?> clazz = trace[i].getClass(); if (!clazz.equals(AbLogUtil.class)) { String callingClass = trace[i].getClassName(); callingClass = callingClass.substring(callingClass.lastIndexOf('.') + 1); callingClass = callingClass.substring(callingClass.lastIndexOf('$') + 1); caller = callingClass + "." + trace[i].getMethodName(); break; } } return String.format(Locale.US, "[%d] %s: %s", Thread.currentThread().getId(), caller, msg); } }