欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android中的日志工具类Log详细介绍

程序员文章站 2024-01-20 20:57:58
...

Android中的日志工具类是Log ( android.util.Log ),这个类中提供了如下5个方法来供我们打印日志。


方法名称: 方法功能:
Log.v() 用于打印那些最为琐碎的、意义最小的日志信息。对应级别verbose,是 Android日志里面级别最低的一种。
Log.d() 用于打印一些调试信息,这些信息对你调试程序和分析问题应该是有帮助的。对应级别debug,比 verbose高一级。
Log.i() 用于打印一些比较重要的数据,这些数据应该是你非常想看到的、可以帮你分析用户行为数据。对应级别info,比 debug高一级。
Log.w() 用于打印一些警告信息,提示程序在这个地方可能会有潜在的风险,最好去修复一下这些出现警告的地方。对应级别warn,比 info高一级。
Log.e() 用于打印程序中的错误信息,比如程序进入到了catch语句当中。当有错误信息打印出来的时候,一般都代表你的程序出现严重问题了,必须尽快修复。对应级别error,比 warn高一级。

为什么不使用System.out而去使用Log

​ 我相信很多的Java新手都非常喜欢使用System.out.println()方法来打印日志,不知道你是不是也喜欢这么做。不过在真正的项目开发中,是极度不建议使用System.out.println()方法的!如果你在公司的项目中经常使用这个方法,就很有可能要挨骂了。

​ 为什么System.out.println()方法会这么遭大家唾弃呢?经过我仔细分析之后,发现这个方法除了使用方便一点之外,其他就一无是处了。。那缺点又在哪儿了呢?这个就太多了,比如日志打印不可控制、打印时间无法确定、不能添加过滤器、日志没有级别区分…

​ 听我说了这些,你可能已经不太想用System.out.println()方法了,那么Log就把上面所说的缺点全部都改好了吗?虽然谈不上全部,但我觉得Log已经做得相当不错了。我现在就来带你看看Log 和 logcat配合的强大之处。

logcat中可以很轻松的添加过滤器

Android中的日志工具类Log详细介绍

​ 目前只有3个过滤器,Show only selected application表示只显示当前选中程序的日志,Firebase是谷歌提供的一个分析工具,我们可以不用管它,No Filters相当于没有过滤器,会把所有的日志都显示出来。那可不可以自定义过滤器呢?当然可以,我们现在就来添加一个过滤器试试。

点击图中的Edit Filter Configuration,会弹出一个过滤器配置界面。我们给过滤器起名叫data,并且让它对名为data的 tag进行过滤,如下图所示:
1.
Android中的日志工具类Log详细介绍
2.Android中的日志工具类Log详细介绍
点击OK,你就会发现你已经多出了一个data过滤器。当你点击这个过滤器的时候,你会发现刚才在onCreate()方法里打印的日志没了,这是因为data这个过滤器只会显示tag名称为data的日志。你可以尝试在oncreate()方法中把打印日志的语句改成Log.d( " data",“onCreateexecute”),然后再次运行程序,你就会在data过滤器下看到这行日志了。
不知道你有没有体会到使用过滤器的好处,可能现在还没有吧。不过当你的程序打印出成百上千行日志的时候,你就会迫切地需要过滤器了。

public class HelloWorldActivity extends AppCompatActivity {
private static final String TAG="HelloWorldActivity";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.hello_world_layout);
        Log.d("data", "onCreate: execute");
    }
}

运行结果(在Android Monitor里面查看):
Android中的日志工具类Log详细介绍

看完了过滤器,再来看一下logcat 中的日志级别控制吧。logcat中主要有5个级别

Android中的日志工具类Log详细介绍
当前我们选中的级别是verbose,也就是最低等级。这意味着不管我们使用哪一个方法打印日志,这条日志都一定会显示出来。而如果我们将级别选中为debug,这时只有我们使用debug及以上级别方法打印的日志才会显示出来,以此类推。你可以做一下试验,当你把 logcat中的级别选中为info、warn或者error时,我们在oncreate()方法中打印的语句是不会显示的,因为我们打印日志时使用的是Log.d()方法。
日志级别控制的好处就是,你可以很快地找到你所关心的那些日志。相信如果让你从上千行日志中查找一条崩溃信息,你一定会抓狂的吧。而现在你只需要将日志级别选中为 error,那些不相干的琐碎信息就不会再干扰你的视线了。
最后我们再来看一下关键字过滤。如果使用过滤器加日志级别控制还是不能锁定到你想查看的日志内容的话,那么还可以通过关键字进行进一步的过滤,如下图所示:
Android中的日志工具类Log详细介绍
我们可以在输入框里输人关键字的内容,这样只有符合关键字条件的日志才会显示出来,从而能够快速定位到任何你想查看的日志。另外还有一点需要注意,关键字过滤是支持正则表达式的,有了这个特性,我们就可以构建出更加丰富的过滤条件。
关于Android中日志工具的使用我就准备讲到这里,logcat 中其他的一些使用技巧就要靠你自己去摸索了。
谢谢观看, 望君与吾共进.