在Android Open Source Project 的代码风格中,它声明我们不应该使用System.out.println()
,但我不明白为什么。谁能解释一下?我应该使用什么来跟踪我的应用程序的日志?
这是供参考的行:
System.out.println()
(或printf()
用于本机代码)永远不应使用。System.out
并被System.err
重定向到/dev/null
,因此您的打印语句将没有可见的效果。但是,为这些调用发生的所有字符串构建仍然会被执行。
在Android Open Source Project 的代码风格中,它声明我们不应该使用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。除非在开发期间,否则永远不应将详细信息编译到应用程序中。调试日志被编译,但在运行时被剥离。始终保留错误、警告和信息日志。
这些是Log
该类的可用方法:
Log.d()
- 发送DEBUG
日志消息。Log.e()
- 发送ERROR
日志消息。Log.i()
- 发送INFO
日志消息。Log.v()
- 发送VERBOSE
日志消息。Log.w()
- 发送WARN
日志消息。Log.wtf()
- 多么可怕的失败:报告不应该发生的异常。上述方法(具有 3 种可能Log.w
的Log.wtf
参数模式除外)需要以下参数:
String tag, String msg
:
tag
:用于标识日志消息的来源。这个值可能是null
。
msg
:您想要记录的消息。这个值可能是null
。
String tag, String msg, Throwable tr
- 类似于第一个模式,但允许指定异常。如果要将异常记录到日志输出中,则应使用此模式。
(For Log.w
and Log.wtf
)String tag, Throwable tr
类似于第三种模式,但不允许指定消息。请注意,您仍然可以传递消息,但它应该在第二个参数排列中。
编辑:直接回答您的问题:println()
ofSystem.out
并且System.err
仍将显示在 logcat 中,但有限制。
VERBOSE
,ERROR
或DEBUG
使用System.out
或System.err
。您不能定义自己的标签,它会显示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 的贡献。
所以不要这样做!
日志是跟踪我们的 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);
}
}
我希望它会帮助你
您可以使用内置的Log 实用程序,该实用程序将直接打印到 LogCat。
您可以使用Log.e(String, String)
以红色显示的错误。还有v
, d
, i
, 和w
分别表示详细、调试、信息和警告。
以下应该可以打印异常
1. Log.d("myapp", Log.getStackTraceString(new Exception()));
或者
2.通过深入挖掘可以获得更长的堆栈跟踪。例如:
Log.getStackTraceString(e.getCause().getCause());