当前位置:   article > 正文

Android开发笔记之Log日志输出及其正确使用方法_android log输出

android log输出

一、引言

        日志记录是将应用程序的操作和状态记录到辅助接口(例如文件,或者数据库,都可以)的过程。然而,软件开发人员并不十分重视日志记录。其实有用的日志可以为开发人员(特别是当有人必须调试/维护别人的代码时)在试图理解代码的作用时提供巨大帮助。一些开发人员说堆栈跟踪是人们应该需要的,但这与事实相去甚远。堆栈跟踪很棒,可以告诉您哪里出了什么问题,但它们无法告诉您最初是如何到达那里的。当然,您可以通过断点跟踪执行,但是,盲目进入会使整个过程比实际应该和可能更耗时。

        总而言之,不管你需要训练人工智能模型,还是需要编写可靠软件程序,我都十分建议你在开发过程中添加日志记录,以便更好地维护代码。

二、Android开发中为什么要用Log日志输出而不用print函数打印

        很多程序员都喜欢使用System.out.println()来进行调试,因为它无比地方便。但是在Android的开发过程中,并不建议这样。使用System.out.println()很难找到打印出来的信息,因为Android的输出实在是太多,一不留神这刚print出来的东西就没了(被其它Log输出顶上去)。更官方的原因是System.out.println()没有打印的级别区分,也没有日志标签,同时还不方便保存到文件当中。

        用Log的话就可以很好地使用日志标签和进行日志级别的区分,同时在Android开发环境中的Logcat添加过滤器很好地定位打印的信息。

三、Android日志输出的不同方法

日志输出方法日志级别备注
Log.v()verbose打印琐碎、意义较小的日志信息
Log.d()debug打印一些调试信息
Log.i()information打印一些比较重要的数据
Log.w()warn打印一些警告信息
Log.e()error打印程序中的错误信息

        上面有五种方法打印日志,请大家按照日志级别来进行打印,不要用错(例如通过Log.e方法打印琐碎信息)。

四、日志打印Demo

        为了说明日志打印的简单方法,这里写一个Demo:在Activity里面打印5条日志,这些日志的级别分别被设置为v、d、i、w和e。代码如下:

  1. package com.cs.blackbox;
  2. import androidx.appcompat.app.AppCompatActivity;
  3. import android.os.Bundle;
  4. import android.util.Log;
  5. import java.util.Timer;
  6. import java.util.TimerTask;
  7. public class LogPrintActivity extends AppCompatActivity {
  8. private static final String TAG = "Log--------->>>>";
  9. TimerTask task = new TimerTask() {
  10. @Override
  11. public void run() {
  12. //TODO
  13. Log.v(TAG, "v: I am a robot, and testing the log print function.");
  14. Log.d(TAG, "d: I am a robot, and testing the log print function.");
  15. Log.i(TAG, "i: I am a robot, and testing the log print function.");
  16. Log.w(TAG, "w: I am a robot, and testing the log print function.");
  17. Log.e(TAG, "e: I am a robot, and testing the log print function.");
  18. }
  19. };
  20. @Override
  21. protected void onCreate(Bundle savedInstanceState) {
  22. super.onCreate(savedInstanceState);
  23. setContentView(R.layout.activity_log_print);
  24. Timer timer = new Timer();
  25. timer.schedule(task, 5000, 5000);
  26. }
  27. }

        这里说一下程序中的一些常量和变量,其中常量TAG = "Log--------->>>>"是日志打印的标记,通过Logcat日志筛选的功能,你可以快速定位到自己的程序输出。使用方法如下:

        1、Android Studio开发环境的底部点击“Logcat”

        2、在搜索框中输入你的TAG,而且右边选择“Show only selected application”。

         3、然后你就可以看到你自定义的日志输出了。

         这里说明一下“Verbose”的意思,选择了它是指Logcat窗口显示“v、d、i、w和e”等全部级别类型的日志,而如果你在箭头那里选择了“Debug”,那么Logcat窗口就会只显示“d、i、w和e”等四个级别类型的日志。同理,当你选择了“Info”,Logcat窗口只显示“i、w和e”等三个级别类型的日志;当你选择了“Warn”,Logcat窗口只显示“w和e”等两个级别类型的日志;而当你选择“Error”时,Logcat窗口就会只显示“e”级别类型的日志。

         说到这里,我终于明白别人为什么喜欢用Log.e()来打印程序输出,因为如果你选择Log.v或者Log.d的话,别人或者别的app打印的那些不重要的日志也会被显示出来,导致自己想要看到的日志打印输出很难找到。

        但无论如何,建议还是通过区分级别来打印日志会好点。

五、参考资料

        1、An introduction to logging for programmers

        2、The Art of Logging

        3、郭霖,第一行代码Android第3版

        4、Android倒计时

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/679889
推荐阅读
相关标签
  

闽ICP备14008679号