为啥 Log.d() 和 Log.v() 不打印

Posted

技术标签:

【中文标题】为啥 Log.d() 和 Log.v() 不打印【英文标题】:Why are Log.d() and Log.v() not printing为什么 Log.d() 和 Log.v() 不打印 【发布时间】:2015-02-10 15:02:10 【问题描述】:

我的 Activity 中有以下测试代码:

@Override
public void onStart() 
    super.onStart();
    Log.e(CLASS_NAME, "ERROR onStart()");
    Log.w(CLASS_NAME, "WARN onStart()");
    Log.i(CLASS_NAME, "INFO onStart()");
    Log.d(CLASS_NAME, "DEBUG onStart()");
    Log.v(CLASS_NAME, "VERBOSE onStart()");

android Studio 的 logcat 视图中,它只打印:

02-10 15:56:10.190    6194-6194/org.example.my_app E/MyActivity﹕ ERROR onStart()
02-10 15:56:10.190    6194-6194/org.example.my_app W/MyActivity﹕ WARN onStart()
02-10 15:56:10.190    6194-6194/org.example.my_app I/MyActivity﹕ INFO onStart()

在框的顶部,菜单设置为Log level: “Verbose”,如果我进入它旁边的菜单,选择“Edit filter configuration”“by Log Level”也设置为“Verbose”。为什么Log.d()Log.v() 不打印任何东西?我可能会错过什么?任何建议将不胜感激。

【问题讨论】:

@webo80 你觉得 很奇怪...... Log.d 在一个模块中为我工作,但在另一个模块中没有! 【参考方案1】:

接受的答案不起作用

我的解决方案:

当你的Log.d 不工作时,Log.wtf 工作

它对我有用,这可能对其他找到解决方案的人有帮助

【讨论】:

使用Log.wtf基本上和使用Log.e一样,只是更严重。因此,这并不是对已经提出的问题的真正改进。 OP 正试图让 logcat 显示 less 严重的日志级别,D 和 V。 “wtf”是什么意思……? :D WTF - 意味着多么可怕的失败。 Log.wtf 确实在 logcat 中显示为错误,但我的意思是 WTF?!用 Eclipse 开发 android 应用程序很糟糕,但 Studio 也一样可悲。 起初,我认为这完全是个玩笑,但你瞧,开发人员确实添加了 Log.wtf... 一定很喜欢编码社区。这是我在 isUserAGoat() 之后的第二个最爱【参考方案2】:

Android Studio 过滤已记录的行,但 Log 本身可能会在记录时过滤某些级别。见Log.isLoggable:

任何标签的默认级别都设置为INFO

(但在许多手机上它实际上设置为DEBUGVERBOSE。)

【讨论】:

谢谢。故事的其余部分:这可以在 shell 的标记级别上更改,直到下次重新启动,或者通过创建配置文件。我的手机无法识别配置文件。 Here is a blog post 建议使用您自己的记录器类将所有内容记录到“信息”,从而提供额外的过滤。 这可能是特定于设备的尝试***.com/a/43999262/2783229 注意 Logcat 窗格中的过滤器下拉菜单。【参考方案3】:

修复魅族手机

设置 -> 辅助功能 -> 开发者选项 -> 高级 记录->设置“全部允许”

魅族MX4(Flyme 6.1.0.0)、M2(Flyme 6.1.0.0G)、M5(Flyme 6.3.0.0G):

设置->辅助功能->开发者选项->性能 优化 -> 高级日志记录 -> 设置“全部允许”

Huawei, logcat not showing the log for my app?

对于“开发者选项”中的其他手机搜索:选项“日志记录”并设置“全部”。

【讨论】:

【参考方案4】:

关闭你的开发者选项然后重启你的手机然后打开开发者选项它肯定可以工作!!

【讨论】:

【参考方案5】:

我也遇到过同样的问题。即使按照以前的答案,我也没有找到在 Logcat 中显示日志的方法。

在我自己多次尝试之后,这里是显示日志的(其他)方法:

只需在组合框中选择 "Show only selected application" 即可。之前选择的是"Firebase"

希望你能看到你的日志 ;-)

【讨论】:

【参考方案6】:

我正在尝试一切。从log.dlog.wtf。但没有任何效果。

然后我重新启动了我的 Android Studio。之后,调试器又开始工作了。

希望这对某人有所帮助。

【讨论】:

重新启动 Studio 对我没有帮助。出于某种原因,它不想向我显示详细的消息,但会显示错误。我记得不久前它确实有效。可悲。【参考方案7】:

对我来说,问题是我实际上在开发人员设置中禁用了记录器缓冲区,因此请转到设置 -> 开发人员选项 -> 记录器缓冲区大小并将其设置为任何不是“关闭”的值。

【讨论】:

这是唯一对我有用的解决方案。谢谢【参考方案8】:

我遇到了与此类似的问题。但是在我的情况下,问题是第一个字符串为空。它在旧版本的 Android Studio 中工作,但在更新后在 Android Studio 5.6 版中停止工作。 当我使用: Log.d(string1, string2); 在我的日志包装类中, 然后只要 string1 是“”,logcat 就会忽略它。解决方案是添加

if(string1 == null || string1 == "") 
    string1 = "defaultString";

之前

Log.d(string1, string2);

我希望这可以帮助任何人解决这个问题。

【讨论】:

【参考方案9】:

这开始发生在我在 Android Studio 3 中。我正在打印旧的 Log.v,但是当我添加一个新的时,什么也没发生。调试器断点也是如此。

清理解决方案并重新启动 Android Studio 对我有用,但有一个更简单的解决方案。

Disable Instant Run。 Instant Run 似乎无法识别新的 Log.v 或断点。

在此过程中,我还在主要活动的运行/调试配置中添加了 Gradle-aware Make。我不知道这是否有必要,但我保留了它。 ([Main Menu] Run -> Edit Configurations...)

【讨论】:

【参考方案10】:

我有同样的问题。我关闭并打开了开发人员选项和 USB 调试,所有日志都正常工作。我还在开发人员选项中启用了 gpu 调试层(我认为这没有帮助)。

【讨论】:

以上是关于为啥 Log.d() 和 Log.v() 不打印的主要内容,如果未能解决你的问题,请参考以下文章

Android的日志工具Log

Android日志工具Log的使用

Android日志工具Log

求教怎么在android的Logcat中输出日志

android程序在logcat中不停地打印timeline时间戳

Android Studio 日志工具