System.out.println()
,但是我不明白为什么。有人能解释一下吗?我应该使用什么来跟踪我的应用程序日志?以下是参考行:
System.out.println()
(对于本地代码使用printf()
)不应该被使用。System.out
和System.err
会被重定向到/dev/null
,所以你的打印语句将没有任何可见效果。然而,所有这些调用发生的字符串构建都会被执行。
System.out.println()
,但是我不明白为什么。有人能解释一下吗?我应该使用什么来跟踪我的应用程序日志?
System.out.println()
(对于本地代码使用printf()
)不应该被使用。System.out
和System.err
会被重定向到/dev/null
,所以你的打印语句将没有任何可见效果。然而,所有这些调用发生的字符串构建都会被执行。
您应该使用android.util.Log
类。
以下是Log
类的描述:
用于发送日志输出的API。
通常,您应该使用
Log.v()
、Log.d()
、Log.i()
、Log.w()
和Log.e()
方法来编写日志。然后,您可以在logcat中查看日志。从最不详细到最详细的记录级别顺序为ERROR、WARN、INFO、DEBUG、VERBOSE。Verbose除了在开发期间外,永远不应该编译进应用程序中。调试日志在编译时被编译进去,但在运行时被剥离。错误、警告和信息日志始终保留。
这些是Log
类的可用方法:
Log.d()
- 发送一个DEBUG
日志信息。Log.e()
- 发送一个ERROR
日志信息。Log.i()
- 发送一个INFO
日志信息。Log.v()
- 发送一个VERBOSE
日志信息。Log.w()
- 发送一个WARN
日志信息。Log.wtf()
- 糟糕的失败:报告一个永远不应该发生的异常。Log.w
和Log.wtf
,它们有3种可能的参数模式)需要以下参数:
String tag, String msg
:
tag
:用于标识日志消息的来源。此值可以为null
。
msg
:您想记录的消息。此值可以为null
。
String tag, String msg, Throwable tr
- 与第一种模式类似,但允许指定异常。如果要将异常记录到日志输出中,则应使用此模式。
(对于Log.w
和Log.wtf
) String tag, Throwable tr
- 与第三种模式类似,但不允许指定消息。请注意,仍然可以传递消息,但应该在第二个参数排列中。
System.out
和System.err
的println()
仍将在logcat中显示,但有限制。
System.out
或System.err
记录VERBOSE
、ERROR
或DEBUG
。您不能定义自己的标签,它将显示带有您文本的System.err
或System.out
。例如:
System.out.println("Hello!")
等同于Log.i("System.out","Hello!")
System.err.println("Hello!")
等同于Log.w("System.err","Hello!")
System.out.println("")
在Android中不会正常运行,因为应用程序没有连接到终端。
最好使用Log.(d)(v)(e)(i)(w)
,因为有些东西正在主动监视LogCat。
System.out.println()
会将内容打印到LogCat中,但需要额外的一组系统指令,使其效率不高,但它仍然有效。
如果我们想跟踪 Android 项目,我们可以使用 Log 类。它有一些方法,例如:
Log.e(TAG,MESSAGE)
Log.v(TAG,MESSAGE)
Log.w(TAG,MESSAGE)
Log.d(TAG,MESSAGE)
Log.i(TAG,MESSAGE)
它是 Utils 包的静态方法。将它逐行放置,您可以在 LogCat 中查看它。
享受 Android 的乐趣吧!
从你自己的链接中可以看到:
不应使用System.out.println()(或原生代码的printf())。 System.out和System.err将被重定向到/ dev / null,因此您的打印语句将没有可见效果。 但是,所有针对这些调用进行的字符串构建仍将被执行。
此外,在该页面的开头,它说:
以下规则不是指南或建议,而是严格的规则。 如果Android的贡献不遵守这些规则,则通常不会被接受。
所以不要这样做!
Log.*()
)。 - LarsHSystem.out.println
语句的输出,我说-这是一种可靠的调试Android的方式吗...他们说对他们来说很好用。据我所知,它现在被重新路由通过Log.i
,但我猜可能不比上面的方法更可靠... - ChiefTwoPencilsLog.getStackTraceString(e.getCause().getCause());
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); for(int i=0;i<100;i++) { Log.e("i = ",""+i); Log.v("i = ",""+i); Log.i("i = ",""+i); Log.w("i = ",""+i); Log.d("i = ",""+i); } }我希望这对您有所帮助。