android log笔记
一、添加log
1 java层
import android.util.Log
//在需要打印Log的地方执行Log.v,Log.d,Log.i,Log.w,Log.e.
private static final String LOG_TAG = "MY_LOG_TAG";
Log.i(LOG_TAG, "This is the log printed by Log.i in android user space.");
Log.e(LOG_TAG, "xxxxxxxxxxx" + mFileName, e);
2 c、c++层
#include <cutils/log.h>
在需要调用Log的地方执行:ALOGV,ALOGD,ALOGI,ALOGW,ALOGE。
ALOGE("This is the log printed by LOGV in android user space.");//输出到main缓冲区
SLOGE("xxxxxxxxxxxxxxxxxx"); //输出到system缓冲区
还需要修改 Android.mk
LOCAL_SHARED_LIBRARIES := liblog
LOCAL_C_INCLUDES += system/core/include //可不用
3 libcore
System.out.println("##### xxxxxxxxxxxx ####### ");
二 抓log
参数<filter-spec>用于对某类的tag的日志输出进行过滤。每一个输出的Android日志信息都有一个tag和它的优先级.
该选项指定输出日志信息的<filename> ,默认是stdout . 但是这里的文件是指android系统上的文件。如果我们想把日志输出到本地window系统的话,请采用如下形式的命令:
三 log等级以及动态log
1 log等级
Verbose: 开发调试过程中一些详细信息,不应该编译进产品中,只在开发阶段使用。
Debug: 用于调试的信息,编译进产品,但可以在运行时关闭。
Info:例如一些运行时的状态信息,这些状态信息在出现问题的时候能提供帮助。
Warn:警告系统出现了异常,即将出现错误。
Error:系统已经出现了错误。
Info、Warn、Error这三个等级的Log的警示作用依次提高,需要一直保留。这些信息在系统异常时能提供有价值的分析线索。
2 动态log
2.1 通过版本控制
2.1.1 java 部分
import android.os.Build;
import android.util.Log
final public Boolean isEng =Build.TYPE.equals("eng");
if (isEng)
Log.v(“LOG_TAG”,“LOG_MESSAGE”);
2.1.2 c c++部分
#include<cutils/log.h>
char value[PROPERTY_VALUE_MAX];
int isEng=0;
property_get("ro.build.type",value, "user");
isEng=strcmp(value, "eng");
if (isEng)
ALOGV();
2.2 默认不开启,通过终端命令开启。
2.2.1 Java部分:
import android.util.Log
final String TAG=”MyActivity”;
final public Boolean LOG_DEBUG = Log.isLoggable(TAG, Log.DEBUG);
if (LOG_DEBUG)
Log.d(“LOG_TAG”,“LOG_MESSAGE”);
运行时开启log: 在终端输入:setprop log.tag.MyActivity DEBUG
运行时关闭log: 在终端输入:setprop log.tag.MyActivity INFO
2.2.2 c、c++部分:
#include<cutils/log.h>
#defineLOG_CTL “debug.MyActivity.enablelog”
charvalue[PROPERTY_VALUE_MAX];
int isDebug=0;
property_get(LOG_CTL,value, "0");
isDebug=strcmp(value,"1");
if (isDebug)
ALOGD();
运行时开启log: 在终端输入:setpropdebug.MyActivity.enablelog 1
运行时关闭log: 在终端输入:setpropdebug.MyActivity.enablelog 0
android log笔记相关推荐
- Android进阶笔记:Messenger源码详解
Messenger可以理解为一个是用于发送消息的一个类用法也很多,这里主要分析一下再跨进程的情况下Messenger的实现流程与源码分析.相信结合前面两篇关于aidl解析文章能够更好的对aidl有一个 ...
- Android进阶笔记:AIDL内部实现详解 (二)
接着上一篇分析的aidl的流程解析.知道了aidl主要就是利用Ibinder来实现跨进程通信的.既然是通过对Binder各种方法的封装,那也可以不使用aidl自己通过Binder来实现跨进程通讯.那么 ...
- 【转】 Pro Android学习笔记(二十):用户界面和控制(8):GridView和Spinner
目录(?)[-] GridView Spinner GridView GridView是网格状布局,如图所示.在了解ListView后,很容易了解GridView.下面是例子的XML文件. <? ...
- 《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:离线矢量数据同步...
1.前言 上一篇文章中我们实现了离线要素的编辑操作,这一篇中主要介绍离在线一体化技术中最后一个环节离线数据的同步功能,通过对数据的上传,服务器端的版本化管理,实现数据生产管理的整个流程. 转载请注明出 ...
- 《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:离线矢量数据编辑...
1.前言 在上一篇我们已经实现了离线地理数据库的下载,这一篇我们着重介绍离线数据库的加载与编辑. 由于ArcGIS Runtime SDK for Android 10.2.X版本并没提供要素绘制功能 ...
- 《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:离线矢量数据下载...
1.前言 1.1.环境准备: ArcGIS for Desktop 10.4.1(10.2.1以上版本即可) ArcGIS for Server 10.4.1 (10.2.1以上版本即可) Postg ...
- Android开发笔记(序)写在前面的目录
知识点分类 一方面写写自己走过的弯路掉进去的坑,避免以后再犯:另一方面希望通过分享自己的经验教训,与网友互相切磋,从而去芜存菁进一步提升自己的水平.因此博主就想,入门的东西咱就不写了,人不能老停留在入 ...
- Android开发笔记(一百六十六)H5通过WebView录像上传
前面的博文< Android开发笔记(一百五十二)H5通过WebView上传图片>介绍了如何拍照上传给网页,不料客户又要求再加个摄像上传给网页.既然如此,那么再探讨一下如何实现这个摄像上传 ...
- Android开发笔记(一百五十八)运行时动态授权管理
App开发过程中,涉及到硬件设备的操作,比如拍照.录音.定位等等,都要在AndroidManifest.xml中声明相关的权限.可是Android系统为了防止某些App滥用权限,从而允许用户在系统设置 ...
最新文章
- 乾云服务器虚拟化,乾云服务器虚拟化系统
- java压缩流的用法_Java对压缩包的操作(解压缩)
- 读取xml文件转成ListT对象的两种方法(附源码)
- Codeforces 754E:Dasha and cyclic table
- httpd配置文件详解(上)
- 润乾报表鼠标移动行、单元格变色
- Codeforces 853A 贪心 优先队列
- Make a Crystal UVA - 11014 (容斥定理)
- android布局配置
- TCP新手误区–数据校验的意义
- java实现动态规划求解给定矩阵的和最大的子数组(矩阵中数字正负均存在)
- spring-boot集成elastic-job 并实现http类型作业
- 概率论-随机变量的数字特征思维导图
- mac软件推荐及chrome插件推荐
- spring boot新闻管理系统 毕业设计源码211113
- MATLAB----绘制三维曲线
- ext ajax同步加载数据,ext 的loadmask 与ajax的同步请求水火不容
- 【Flutter】GridView的使用之GridView.extent
- Python爬虫新手入门教学(十七):爬取yy全站小视频
- 锐捷认证报错:服务器禁止设置多个IP,为避免您出现该问题,把下面的网卡禁用。