关于logcat的使用

关于logcat的使用

根据system/core/include/cutils/log.h中的定义:
 49 /*
 50  * Normally we strip ALOGV (VERBOSE messages) from release builds.
 51  * You can modify this (for example with "#define LOG_NDEBUG 0"
 52  * at the top of your source file) to change that behavior.
 53  */


只有将  #define LOG_NDEBUG 0 放在你的代码中后,ALOGV才会有效。当然,你必须放在
#include <cutils/log.h>  的前面!
这里你同样可以打印文件名,函数名,行号:
 50     ALOGV("yasin test file=%s\n", __FILE__);
 51     ALOGV("yasin test func=%s\n", __func__);
 52     ALOGV("yasin test line=%d\n", __LINE__);
这里用法和内核一样。

你可以在你的源码前面定义一个TAG,比如:
#define LOG_TAG "lights"
这样将来logcat出来的东西就是这样的:
V/lights  (  422): yasin test file=device/sprd/common/libs/liblights/lights.c
V/lights  (  422): yasin test func=write_int
V/lights  (  422): yasin test line=52

这里的lights就是你的TAG ,V代表优先级是最低一级。

你还可以在logcat时加一些参数,比如:根据TAG只打印你自己log,或者只打印某个优先级以上的log等等,如:
logcat   lights:V    *:S

这里的含义就是只打印TAG为lights,且优先级为V以上的都打印。其他标签的只打印S级别的。(S级别是最高级别)这样一来,别的log就都被过滤了,只剩下标签未lights的所有级别的了。也就是只剩你的关于lights的所有级别的log


更多logcat使用方式参考:http://www.oschina.net/question/565065_67884


### logcat 使用格式 在开发过程中,`logcat` 是 Android 开发者用于调试应用程序的重要工具。通过 `logcat` 可以查看来自应用的日志消息以及其他系统级别的日志信息。 #### 日志级别 日志分为不同的优先级,从低到高分别是 Verbose (V),Debug (D),Info (I),Warn (W),Error (E) 和 Assert (A)[^3]: - **Verbose**: 最详细的日志信息。 - **Debug**: 调试阶段使用的日志。 - **Info**: 正常运行时的信息记录。 - **Warn**: 预警性质的消息。 - **Error**: 错误发生时的提示。 - **Assert**: 断言失败的情况。 这些不同等级可以帮助开发者更有效地定位问题所在。 #### 记录日志的方法 为了向 `logcat` 中写入自定义的日志条目,在代码里可以调用如下静态方法之一来实现: ```java // 定义标签和要打印的内容 String TAG = "MyAppTag"; Log.v(TAG, "Very verbose message"); Log.d(TAG, "Debugging information here"); Log.i(TAG, "Informational messages go here"); Log.w(TAG, "Warning conditions should be logged like this"); Log.e(TAG, "Errors are reported with error level logging", new Exception("Example exception")); ``` 每种类型的日志都有其特定用途,合理利用能够帮助更好地理解程序行为并快速解决问题。 #### 查看日志的方式 可以通过多种方式访问由上述函数产生的日志数据: 1. **IDE集成环境**:大多数现代 IDE 如 Android Studio 提供内置的支持,可以直接打开相应的窗口浏览实时更新的日志流; 2. **命令行工具**:使用 ADB 工具执行 `adb logcat` 命令也可以获得相同的效果,并且支持更多高级选项配置输出样式[^2]; 当直接从终端或脚本中调用 `logcat` 时,默认情况下不会自动设置 ANDROID_LOG_TAGS 环境变量中的过滤规则,这意味着除非显式指定参数,否则所有级别的日志都将被显示出来。 #### 自定义日志输出格式 除了基本功能外,还可以进一步定制化所接收的数据形式。例如只关注某个进程ID下的活动情况或是按照时间戳排序等特殊需求都可以借助额外的标志位完成[^1]。 ```bash # 显示带有日期时间和线程ID的日志 adb logcat *:S MyApplication:D # 过滤特定包名的应用日志 adb shell setprop log.tag.MyCustomTag VERBOSE adb logcat --pid=$(adb shell pidof -s com.example.myapp) ``` 以上就是关于如何正确运用 `logcat` 的一些指导说明,希望对理解和实践有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YasinLeeX

再来一杯西湖龙井。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值