在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.wand 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());