Android中的日志输出(StackTraceElement)
2016-04-17 21:12
453 查看
由于Android的Log日志感觉输出并不好用,特意弄了一个日志工具类,实现了可以打印当前的类,函数,行号等信息;
使用了StackTranceElement类;
2) 由Thread.currentThread().getStackTrace()返回;
返回值是一个数组:
从0开始,代表最后调用的函数
所以在上面的函数中,得到第[2]个元素,才是最终调用Log.d()等函数的StackTraceElement栈。
相应的获得对应的信息类。
使用了StackTranceElement类;
package com.lepower.utils; import android.util.Log; /** * 日志输出管理 * @author fing 2016-10-11 * */ public class LogUtils { public static boolean LOG_PRINT = true; private static String generateTag() { StackTraceElement caller = new Throwable().getStackTrace()[2]; String tag = "%s.%s(L:%d)"; String callerClazzName = caller.getClassName(); callerClazzName = callerClazzName.substring(callerClazzName .lastIndexOf(".") + 1); tag = String.format(tag, callerClazzName, caller.getMethodName(), caller.getLineNumber()); return tag; } public static <T> void e(T msg) { if (LOG_PRINT) Log.e(generateTag(), "" + msg); } public static <T> void i(T msg) { if (LOG_PRINT) Log.i(generateTag(), "" + msg); } public static <T> void v(T msg) { if (LOG_PRINT) Log.v(generateTag(), "" + msg); } public static <T> void d(T msg) { if (LOG_PRINT) Log.d(generateTag(), "" + msg); } public static <T> void w(T msg) { if (LOG_PRINT) Log.w(generateTag(), "" + msg); } public static <T> void e(String tag, T msg) { if (LOG_PRINT) Log.e(generateTag()+"->"+tag, "" + msg); } public static <T> void d(String tag, T msg) { if (LOG_PRINT) Log.d(generateTag()+"->"+tag, "" + msg); } public static <T> void v(String tag, T msg) { if (LOG_PRINT) Log.v(generateTag()+"->"+tag, "" + msg); } public static <T> void i(String tag, T msg) { if (LOG_PRINT) Log.i(generateTag()+"->"+tag, "" + msg); } public static <T> void w(String tag, T msg) { if (LOG_PRINT) Log.w(generateTag()+"->"+tag, "" + msg); } }
StackTraceElement:
1) 由 new Throwable().getStackTrace() 返回;2) 由Thread.currentThread().getStackTrace()返回;
返回值是一个数组:
从0开始,代表最后调用的函数
所以在上面的函数中,得到第[2]个元素,才是最终调用Log.d()等函数的StackTraceElement栈。
相应的获得对应的信息类。
相关文章推荐
- MySQL Server 日志
- MSSQL 2005 LOG备份webshell的方法
- 使用MySQL Slow Log来解决MySQL CPU占用高的问题
- C#探秘系列(三)――StackTrace,Trim
- 清理SQL Server 2008日志文件Cannot shrink log file 2 的解决方案
- Android系统开发中log的使用方法及简单的原理
- android杂记:C++文件的添加log方法分享
- 提取oralce当天的alert log的shell脚本代码
- mysql正确安全清空在线慢查询日志slow log的流程分享
- PHP error_log()将错误信息写入一个文件(定义和用法)
- Apache启动错误Permission denied: httpd: could not open error log file解决方法
- Android开发笔记之:Log图文详解(Log.v,Log.d,Log.i,Log.w,Log.e)
- Android编程之基于Log演示一个activity生命周期实例详解
- PHP如何将log信息写入服务器中的log文件
- SQL Server中减小Log文件尺寸的方法分享
- Python中使用logging模块打印log日志详解
- python根据文件大小打log日志
- Android将应用调试log信息保存在SD卡的方法
- Hadoop配置常见Log错误指导
- BIND(三)—— DNS工具和BIND日志.md