06 Android日志攻击Log
日志工具类
android.util.log
- Log.v()
- 打印最为琐碎的、意义最小的日志信息
- 对应级别为:verbose
- Android日志级别最低的一种
- Log.d()
- 打印调试信息
- 对应级别为:debug
- 比verbose高一级
- Log.i()
- 打印一些比较重要的数据
- 可以帮助分析用户行为数据
- 对应级别:info
- 比debug高一级
- Log.w()
- 打印一些警告信息,提示程序在这个地方可能会有潜在的分享,最好去修复这些出现警告的地方
- 对应级别:warn
- 比info高一级
- Log.e()
- 打印程序中的错误信息
- 对应级别:error
- 比warn高一级
案例
在HelloWorkd项目的MainActitvty中的onCreate()方法中添加一行打印日志的语句
package com.example.helloworld;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
/**
* 继承自AppCompatActivity,是一种向下兼容的Activity
* 可以将Activity在各个系统版本中增加的特性和功能最低兼容到Android2.1系统
* Activity是Android系统提供的一个活动基类
* 我们项目中所有的活动都必须继承他或者他的子类才能拥有活动的特性
* (AppCompatActivity是Activity的子类)
*/
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
/*
onCreate()方法:一个活动被创建时,必定要执行的方法
*/
super.onCreate(savedInstanceState);
/*
Android程序的设计讲究逻辑和视图分离
不推荐在活动(Activity)中直接编写界面
通用的做法是在布局文件中编写界面,然后在活动中引入
使用setContentView()方法,引入布局
*/
setContentView(R.layout.activity_main);
/*
传入两个参数
第一个参数:tag:传入当前的类名,主要用于打印信息进行过滤
第二个参数:msg:想要打印的具体的内容
*/
Log.d("MainActivity","onCreate execute");
}
}
控制台输出:
D/MainActivity: onCreate execute
I/mple.helloworl: Not late-enabling -Xcheck:jni (already on)
W/OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
E/MainActivity: onCreate error
logcat
为什么不用System.out.println()
I/System.out: helloworld
- 日志打印不可控制
- 打印时间无法确定
- 不能添加过滤器
- 日志没有级别区分
z onCreate()方法外,输入logt+TAB
private static final String TAG = "MainActivity";
在使用logd,logwu与TAB组合的时候,不用每次都输入TAG值
可以添加过滤器
- show only selected application
- 只显示当前选中程序的日志
- Firebase
- 谷歌提供的一个分析工具
- No Filters
- 没有过滤器