Android 日志工具类
16lz
2021-01-23
Android 日志工具类,对原生日志的高级封装,统一管理,方便切换各级别的日志
import java.util.Hashtable;import android.util.Log;/** * 日志类 * @author WikerYong Email:<a href="#">yw_312@foxmail.com</a> * @version 2012-5-23 下午3:57:25 */public class LogUtils {// 是否开启日志private final static boolean logFlag = true;public final static String tag = "[Wiker]";//日志级别private final static int logLevel = Log.VERBOSE;private static Hashtable<String, LogUtils> sLoggerTable = new Hashtable<String, LogUtils>();private String mClassName;private static LogUtils log;private final static String user="Wiker";private LogUtils(String name) {mClassName = name;}/** * * @param className * @return */@SuppressWarnings("rawtypes") public static LogUtils getLogger(Class c) {LogUtils classLogger = (LogUtils) sLoggerTable.get(c.getClass().getName());if (classLogger == null) {classLogger = new LogUtils(c.getClass().getName());sLoggerTable.put(c.getClass().getName(), classLogger);}return classLogger;}/** * Purpose:Mark user one * * @return */public static LogUtils log() {if (log == null) {log = new LogUtils(user);}return log;}/** * Get The Current Function Name * * @return */private String getFunctionName() {StackTraceElement[] sts = Thread.currentThread().getStackTrace();if (sts == null) {return null;}for (StackTraceElement st : sts) {if (st.isNativeMethod()) {continue;}if (st.getClassName().equals(Thread.class.getName())) {continue;}if (st.getClassName().equals(this.getClass().getName())) {continue;}return mClassName + "[ " + Thread.currentThread().getName() + ": "+ st.getFileName() + ":" + st.getLineNumber() + " "+ st.getMethodName() + " ]";}return null;}/** * The Log Level:i * * @param str */public void i(Object str) {if (logFlag) {if (logLevel <= Log.INFO) {String name = getFunctionName();if (name != null) {Log.i(tag, name + " - " + str);} else {Log.i(tag, str.toString());}}}}/** * The Log Level:d * * @param str */public void d(Object str) {if (logFlag) {if (logLevel <= Log.DEBUG) {String name = getFunctionName();if (name != null) {Log.d(tag, name + " - " + str);} else {Log.d(tag, str.toString());}}}}/** * The Log Level:V * * @param str */public void v(Object str) {if (logFlag) {if (logLevel <= Log.VERBOSE) {String name = getFunctionName();if (name != null) {Log.v(tag, name + " - " + str);} else {Log.v(tag, str.toString());}}}}/** * The Log Level:w * * @param str */public void w(Object str) {if (logFlag) {if (logLevel <= Log.WARN) {String name = getFunctionName();if (name != null) {Log.w(tag, name + " - " + str);} else {Log.w(tag, str.toString());}}}}/** * The Log Level:e * * @param str */public void e(Object str) {if (logFlag) {if (logLevel <= Log.ERROR) {String name = getFunctionName();if (name != null) {Log.e(tag, name + " - " + str);} else {Log.e(tag, str.toString());}}}}/** * The Log Level:e * * @param ex */public void e(Exception ex) {if (logFlag) {if (logLevel <= Log.ERROR) {Log.e(tag, "error", ex);}}}/** * The Log Level:e * * @param log * @param tr */public void e(String log, Throwable tr) {if (logFlag) {String line = getFunctionName();Log.e(tag, "{Thread:" + Thread.currentThread().getName() + "}"+ "[" + mClassName + line + ":] " + log + "\n", tr);}}}
更多相关文章
- android的Log日志打印管理工具类(一)
- android 发布正式版时用Gradle移除日志打印代码(添加混淆配置)
- android log日志文件输出
- idea开发android studio插件,打印日志
- Android日志服务例子,将日志保存在文件中并每天产生一个日志文件
- Android 编程下的日志工具类
- 小白的App开发日志-使用Kotlin开发App - [Android, Kotlin]
- Android Studio连接华为mate8手机调试时不显示错误日志的解决办
- Android崩溃日志获取与解析