为什么我不应该在android中使用System.out.println()

时间:2013-08-23 02:50:17

标签: android logging

在这个code style中,他们说我们不应该使用System.out.println(),但我不明白他们的想法。任何人可以解释一下吗?我应该使用什么来跟踪我的应用程序的日志?

  不应该使用

System.out.println()(或本机代码的printf())。 System.out和System.err被重定向到/ dev / null,因此您的print语句将没有可见效果。但是,为这些调用发生的所有字符串构建仍然会被执行。

7 个答案:

答案 0 :(得分:28)

这也是我的问题。您应该使用Log的类方法。

作为android开发人员,这些是Logging实用程序常用的方法

  1. Log.d() - 调试
  2. Log.e() - 错误
  3. Log.i() - 信息
  4. Log.w() - 警告
  5. Log.v() - 详细
  6. Log.wtf() - 真可怕的失败:报告应该never发生的异常。
  7. 上述方法都有两个参数:

    1. String , String - 这是一个基本参数,它是TAG和消息。
    2. String, String, Throwable - 第一个有相似之处。但是,如果要在logcat中记录Exception或任何Throwable,除了调用printStackTrace()之外,请使用此。
    3. 编辑:直接回答您的问题。 println()System.out的{​​{1}}仍将显示在logcat中,但有局限性。

      • 您无法使用System.errVERBOSE记录ERRORDEBUGSystem.out
      • 您无法定义自己的System.err,它会在您的文字中显示TAGSystem.err。作为等价

        • System.out相当于System.out.println("Hello!")
        • Log.i("System.out","Hello!")相当于System.err.println("Hello!")

答案 1 :(得分:2)

android中的

System.out.println("")将无法正常运行,因为没有应用程序更正的终端。

最好使用Log.(d)(v)(e)(i)(w),因为有一些东西正在积极监控LogCat。

System.out.println()将打印到LogCat,但只有在一组额外的系统操作之后,使其效率不高,但正如我所说,它仍然有效。

答案 2 :(得分:2)

如果我们想跟踪android项目
我们可以使用Log class来做到这一点 有一些方法,如
Log.e(TAG,MESSAGE)
Log.v(TAG,MESSAGE)
Log.w(TAG,MESSAGE)
Log.d(TAG,MESSAGE)
Log.i(TAG,MESSAGE)
它是Utils包的静态方法。把它放在一行,你可以在LogCat中看到它。
多数民众赞成在享受与机器人

答案 3 :(得分:1)

从您自己的链接:

  

System.out.println()(或本地代码的printf())永远不应该   用过的。 System.out和System.err被重定向到/ dev / null,所以你的   print语句没有可见的效果。但是,所有的字符串   为这些调用而发生的构建仍然会被执行。

此外,在该页面的开头,它说:

  

以下规则不是指南或建议,而是严格规定   规则。如果他们通常不会接受对Android的贡献   不遵守这些规则。

所以不要这样做!

答案 4 :(得分:1)

您可以使用内置的Log utility直接打印到LogCat。

您可以使用Log.e(String, String)表示以红色显示的错误。还有vdiw分别用于详细,调试,信息和警告。

答案 5 :(得分:1)

以下应该可以打印异常

1。 Log.d(“myapp”,Log.getStackTraceString(new Exception()));

2。您可以通过深入挖掘来获得更长的堆栈跟踪。例如:

Log.getStackTraceString(e.getCause()的getCause());

答案 6 :(得分:1)

日志是跟踪我们的android项目的最佳方式 喜欢以下代码...
它会帮助你...
只看DDMS logCat,确定项目是如何构建的...... 要求... android.utils.Log;包使用..

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
for(int i=0;i {
Log.e("i = ",""+i);
Log.v("i = ",""+i);
Log.i("i = ",""+i);
Log.w("i = ",""+i);
Log.d("i = ",""+i);
}
}

我希望它能帮到你。