Android 的Log 类只能以TAG的方式却分不同类的信息,这里利用反射的方式,将Log所在的行号和类名抓出来,以后转交测试的时候如果看到log的消息就可以快速定位软件的bug
package com.tcl.navigator.utils;
import android.util.Log;
public class LogUtils {
private static final boolean DEBUG = true;
private static final String TAG = "LogUtils.java";
public static void e(String message) {
if (DEBUG) {
StackTraceElement[] elements = Thread.currentThread().getStackTrace();
if (elements.length < 4) {
Log.e(TAG, "Stack to shallow");
}else{
String fullClassName = elements[3].getClassName();
String className = fullClassName.substring(fullClassName.lastIndexOf(".") + 1);
String methodName = elements[3].getMethodName();
int lineNumber = elements[3].getLineNumber();
Log.e(className + "." + methodName + "():" + lineNumber,message);
}
}
}
public static void d(String message) {
if (DEBUG) {
StackTraceElement[] elements = Thread.currentThread().getStackTrace();
if (elements.length < 3) {
Log.e(TAG, "Stack to shallow");
}else{
String fullClassName = elements[3].getClassName();
String className = fullClassName.substring(fullClassName.lastIndexOf(".") + 1);
String methodName = elements[3].getMethodName();
int lineNumber = elements[3].getLineNumber();
Log.d(className + "." + methodName + "():" + lineNumber,message);
}
}
}
public static void i(String message) {
if (DEBUG) {
StackTraceElement[] elements = Thread.currentThread().getStackTrace();
if (elements.length < 3) {
Log.e(TAG, "Stack to shallow");
}else{
String fullClassName = elements[3].getClassName();
String className = fullClassName.substring(fullClassName.lastIndexOf(".") + 1);
String methodName = elements[3].getMethodName();
int lineNumber = elements[3].getLineNumber();
Log.i(className + "." + methodName + "():" + lineNumber,message);
}
}
}
public static void w(String message) {
if (DEBUG) {
StackTraceElement[] elements = Thread.currentThread().getStackTrace();
if (elements.length < 3) {
Log.e(TAG, "Stack to shallow");
}else{
String fullClassName = elements[3].getClassName();
String className = fullClassName.substring(fullClassName.lastIndexOf(".") + 1);
String methodName = elements[3].getMethodName();
int lineNumber = elements[3].getLineNumber();
Log.w(className + "." + methodName + "():" + lineNumber,message);
}
}
}
public static void v(String message) {
if (DEBUG) {
StackTraceElement[] elements = Thread.currentThread().getStackTrace();
if (elements.length < 3) {
Log.e(TAG, "Stack to shallow");
}else{
String fullClassName = elements[3].getClassName();
String className = fullClassName.substring(fullClassName.lastIndexOf(".") + 1);
String methodName = elements[3].getMethodName();
int lineNumber = elements[3].getLineNumber();
Log.v(className + "." + methodName + "():" + lineNumber,message);
}
}
}
}
分享到:
相关推荐
Android系统自带的Log工具提供了基本的日志输出功能,包括`Log.v()`(verbose)、`Log.d()`(debug)、`Log.i()`(info)、`Log.w()`(warn)、`Log.e()`(error)等方法,但它们默认并不显示行号。在复杂项目中,...
其次,"Android_Log抓取工具"可能具有实时监控功能,可以实时显示设备上产生的日志,使得开发者能够即时了解应用运行状态。此外,工具可能还支持过滤特定关键字,帮助开发者专注于与问题相关的日志条目,避免信息...
在"android log工具包"中,可能提供了自定义标签的功能,使开发者可以为每个模块或函数设置特定的标签,提高日志可读性。 3. **代码行号追踪**: 描述中的"E/PlaceholderFragment.onCreateView(L:44)(19659)"表明...
要在Android代码中打印函数名和行号,通常可以使用`Log`类的`d()`方法,并结合`new Exception().getStackTrace()[2]`来获取当前调用栈的第二层信息(因为第一层通常是`getStackTrace()`本身)。例如: ```java try ...
Android LogCat 工具类,目前功能: 支持显示行号 支持显示Log所在函数名称 支持无Tag快捷打印 支持在Android Studio开发IDE中,点击函数名称,跳转至Log所在位置 支持JSON字符串解析打印 支持XML字符串解析打印 ...
这是一个Android 上 效率极高的 Log 工具,主要功能为控制不同级别的Log输出,Log信息保存到文件、打印行号、函数调用、Json解析、点击跳转、多标签Tab 等功能 打印行号、函数调用、Json解析、点击跳转 参照KLog of ...
在Android开发中,日志(Log)打印是一个非常重要的工具,它可以帮助开发者追踪代码执行流程、定位和解决问题。本文将详细介绍如何对Android的Log类进行封装,以提供更丰富的调试信息,包括打印出当前类文件的行号...
在Android开发中,`Log`类是用于记录应用程序运行时信息的主要工具。默认情况下,`Log`类只打印出消息,但不包括行号,这在调试时可能不够方便。为了打印行号,可以采用以下策略: 1. 使用`Log.d()`、`Log.i()`等...
在Android开发中,日志工具类是调试和分析应用程序不可或缺的一部分。本文将深入探讨"Android日志工具类二",重点关注如何通过优化日志输出,提高代码效率和日志的可读性,使开发者能够更好地理解和解决问题。 首先...
Android Studio 提供了 Logcat 工具,能够显示应用程序的日志信息。选择“View”菜单中的“Tool Windows”,然后选择“Logcat”,最后选择合适的日志级别即可。 (3)设置鼠标悬浮提示 Android Studio 提供了鼠标...
在Android Studio中,可以通过设置日志过滤器来控制显示哪些级别的日志,这对于在大量日志中查找特定信息非常有用。 5. **日志的最佳实践** - 使用合适的日志级别:避免在生产环境中打印过多的`VERBOSE`和`DEBUG`...
本文将详细介绍如何使用工具在Linux环境下解析Android crash堆栈,从而找到问题的源头。 首先,了解Android crash堆栈的基本结构。它通常包含Java和C++两部分的信息,Java部分可以通过Dalvik VM或ART的堆栈信息识别...
在Android中,可以使用`Log`类来打印调试信息,通过`Log.d()`、`Log.i()`、`Log.w()`、`Log.e()`等方法分别输出debug、info、warning和error级别的日志。这些信息可以通过Android Studio的Logcat工具或者命令行工具`...
Android Studio的Profiler工具提供了CPU、内存、网络和GPU的监控,可以帮助开发者发现性能瓶颈,优化资源使用。 总的来说,Android程序调试涉及多个层面,包括使用IDE内置的调试器、日志系统、远程调试以及性能分析...
这个名为"SAF-Kotlin-log.zip"的压缩包很可能包含了一组与使用Kotlin处理Android日志(Log)相关的代码示例或者库。下面我们将深入探讨Android中的日志系统以及如何使用Kotlin优雅地进行日志管理。 Android的日志...
在Android开发过程中,调试是必不可少的一个环节,Eclipse作为经典的集成开发环境,提供了强大的调试工具。本文主要介绍如何使用Eclipse进行Android应用的调试。 首先,添加程序断点是调试的第一步。在Eclipse中,...
10. **其他个性化设置**:例如,是否显示行号,是否开启代码折叠,编辑器的背景颜色,以及代码高亮等。 在提供的"ASHsettings.jar"文件中,很可能包含了上述提到的一些个人设置。这个文件是Android Studio的配置...
3. **日志输出**:在Android设备上,使用`__android_log_print()`函数可以输出调试信息,这些信息将在Eclipse的Console视图中显示。 **六、其他注意事项** 1. **设备权限**:GDB Server可能需要root权限才能运行,...