android.util.Log 中的错误或功能? - Log.isLoggable(DEBUG) = false 但 Log.d() 未禁用

2024-02-08

更新:重新制定问题和标题:

我一直认为昂贵的 android 日志记录方法可以通过询问日志记录是否像这样活跃来优化

    import android.util.Log;

    if (Log.isLoggable("MyContext", Log.DEBUG))
    {
        Log.d("MyContext", "my logging: " + callExpensiveCalculation());
    }

但是,当使用 android 2.2 模拟器尝试此操作时,我的 Log.d() 从未被调用。

所以我尝试了这段代码

    Log.v(MY_CONTEXT, "VERBOSE logging is active: " + Log.isLoggable(MY_CONTEXT, Log.VERBOSE));
    Log.d(MY_CONTEXT, "DEBUG logging is active: " + Log.isLoggable(MY_CONTEXT, Log.DEBUG));
    Log.i(MY_CONTEXT, "INFO logging is active: " + Log.isLoggable(MY_CONTEXT, Log.INFO));
    Log.w(MY_CONTEXT, "WARN logging is active: " + Log.isLoggable(MY_CONTEXT, Log.WARN));
    Log.e(MY_CONTEXT, "ERROR logging is active: " + Log.isLoggable(MY_CONTEXT, Log.ERROR));

令我惊讶的是我得到了

02-27 19:05:43.015: V/MyContext(334): VERBOSE logging is active: false
02-27 19:05:43.015: D/MyContext(334): DEBUG logging is active: false
02-27 19:05:43.015: I/MyContext(334): INFO logging is active: true
02-27 19:05:43.015: W/MyContext(334): WARN logging is active: true
02-27 19:05:43.015: E/MyContext(334): ERROR logging is active: true

因此,即使禁用日志记录,日志记录也能正常工作。 这是 android 中的错误还是我的测试代码中的错误?

是否有其他方法可以确定调试(或其他日志级别之一)是否处于活动状态?

我使用 eclipse logcat-view 和日志级别详细,并从 eclipse 开始测试并运行为 android-app


isLoggable实际上只是一种为某些标签提供标志的机制,以方便您使用。它实际上并没有做任何事情来禁用日志记录。您的第一块代码是正确的:

if (Log.isLoggable("MyContext", Log.DEBUG))
{
    Log.d("MyContext", "my logging: " + callExpensiveCalculation());
}

这将记录或不记录取决于是否isLoggable回报true or false。但是,当您这样做时(不检查isLoggable):

Log.d(MY_CONTEXT, "DEBUG logging is active: " + Log.isLoggable(MY_CONTEXT, Log.DEBUG));

无论发生什么,它都会记录isLoggable如果你打电话的话就会回来。简而言之,你need如果您想根据该标志启用/禁用日志记录,请检查您记录的所有位置。这if语句是让您跳过不必要的日志的部分。如果if子句是false,里面的代码永远不会运行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

android.util.Log 中的错误或功能? - Log.isLoggable(DEBUG) = false 但 Log.d() 未禁用 的相关文章

  • Dagger 2 不会注入我的对象,但可以从组件中获取

    我有我的组件 GithubListActivityScope Component modules GithubListActivityModule class GlideActivityModule class public interfa
  • POST 请求出现 500 内部服务器错误

    这是我向服务器发送 POST 请求的代码 要发布到服务器的 JSON User Name dog Password 123 我如何创建 JSON 对象 object new JSONObject JSONObject jsonObject
  • 如何访问对话框中的 EditText 字段?

    如何访问对话框中的 EditText 字段 将 EditText 小部件放入对话框中
  • 旋转对话框的自定义主题

    我想自定义当我单击 spinnermode dialog 中的微调器时出现的对话框的外观 我想使用对话框片段 但没有找到文档 是否可以 不会 外观是固定的 给人一种操作系统的感觉 您必须创建自己的微调器才能执行此操作 这并不容易 但如果微调
  • 如何使用 Espresso 访问外部网站上的元素

    使用 espresso 我们单击 登录 按钮 该按钮将启动一个外部网站 Chrome 自定义选项卡 您可以在其中登录 然后重定向回我们的 Android 应用程序 Espresso 有没有办法 1 验证正在启动的 URL 是否正确2 访问网
  • Android Studio 1.2.1.1 中 Gradle 项目刷新失败

    我在全新安装的 Android Studio v 1 2 1 1 上创建了示例项目 但遇到了以下错误消息 Gradle project refresh failed in Android Studio 1 2 1 1 见下图 所以我试图在谷
  • 如何知道 TTS 何时完成?

    我正在 Android 上实现交互式语音响应应用程序 我想知道如何确定何时tts speak 函数已完成通话 因此我可以调用我的语音识别器函数 public class TTSActivity extends Activity implem
  • 在 Phonegap 3.x CLI 上构建 android 发布 apk

    如何使用 Phonegap 3 x CLI 在本地构建 Android 应用程序并准备发布 我检查了项目的platforms android目录中生成的bin文件夹 并且只有 debug APK 顺便说一句 我使用这个命令 phonegap
  • 当我转到下一个活动并再次返回时,如何恢复活动的值?

    我希望当用户返回我的第一个活动时恢复编辑文本的值 请帮帮我 提前致谢 这是我的第一个活动代码 用于在编辑文本中获取用户值 public class IntentActivity extends Activity EditText ed1 e
  • 将 XML 从网站解析到 Android 设备

    我正在启动一个 Android 应用程序 它将解析来自网络的 XML 我创建了一些 Android 应用程序 但它们从未涉及解析 XML 我想知道是否有人对最佳方法有任何建议 这是一个例子 try URL url new URL your
  • 如果我清理了反向引用,我是否可以观察 ViewModel?

    建议的实施方式ViewModel是通过使用来公开变化的数据LiveData活动 片段和视图的对象 有一些情况 当LiveData不是一个理想的答案或根本没有答案 自然的选择是将观察者模式应用于ViewModel 使其成为可观察的 注册观察员
  • 在 Android KitKat 中接收彩信

    所以这个视频Android 4 4 短信 API http www youtube com watch v mdq0R2WQssQ DevBytes 解释了 KitKat 中 SMS API 的最新变化 他们还提供了示例项目的链接 http
  • 将字节数组保存为 Android 设备文件夹中的 jpg 文件

    我正在尝试将图像保存在 Android 设备的文件夹中 我使用的代码如下 var newFolder AndroidEnvironment GetExternalStoragePublicDirectory AndroidEnvironme
  • Eclipse 在单独的窗口中打开代码

    我正在 eclipse 中编程 在两个显示器设置上运行 在其中一台显示器上 我只获得了项目资源管理器和编辑器作为自定义透视图 而在另一台显示器上 我获得了其他工具 例如控制台 调试 任务 变量 断点等 例如 当我单击任务视图中的任务时 这将
  • 协程中未捕获异常

    我似乎无法在协程中完成错误处理 我读了很多文章并且异常处理文档 https kotlinlang org docs reference coroutines exception handling html exception propaga
  • 无法使用 Alarmmanager 定期在后台进行工作

    我想按小时在后台调用一项服务 第一个问题是警报管理器工作不顺利 计时器很糟糕 有时早有时晚 第二个问题是 RemoteServiceException Context startForegroundService 然后没有调用 Servic
  • Pebble 应用程序设置中的开发人员选项

    I am following this manual http www sitepoint com pebble watch development javascript and I don t have the Developers Op
  • 在 Android 中将列表传递给另一个 Activity

    我已经创建了一个列表 并希望将该列表传递给另一个活动 但当我创建意图时 我在 putExtra 语句上收到错误 只是想知道是否有任何简单的方法来传递字符串列表而不是单个字符串 Thanks private List
  • 如何登录Oracle数据库?

    我对 Oracle 数据库中常用的日志记录方法感兴趣 我们的方法如下 我们为要记录的表创建一个日志表 日志表包含原始表的所有列以及一些特殊字段 包括时间戳 修改类型 插入 更新 删除 修改者的 id 原始表上的触发器为每次插入和删除创建一个
  • 如何使用 monolog ElasticSearchHandler 登录 Laravel 应用程序

    Monolog 包含弹性搜索处理程序和格式化程序 但它作为自定义通道对 Laravel 的实现并不像 Laravel 文档网站上描述的那么简单 以下是如何执行此操作的简要分步说明 为您的弹性搜索日志记录创建一个配置文件 config ela

随机推荐

  • 如何在yii2中使用if语句正确查看表数据

    我正在研究yii2 我有一个页面 我在其中创建了一个表 现在我想通过数据库查询将一些数据放入其中if else陈述 tbody style text align center line height 12px tbody
  • 在 Windows 上从 bash 脚本运行 Openssl - 主题不以“/”开头

    在我的脚本中我有 openssl req x509 new nodes key certs ca my root ca key pem days 3652 out certs ca my root ca crt pem subj C GB
  • WinForm CRUD 应用程序的 UI 设计,有什么作用?

    我正在设计一个 WinForms CRUD 类似 应用程序 供一大群护士和社会工作者与客户信息进行交互 有很多种不同的形式 大约30ish 他们需要 可能 与任何给定的客户进行交互 并且他们 可能 需要为特定的人从一个客户跳到另一个客户 我
  • 按字节截断字符串

    我创建以下内容 用于将 java 中的字符串截断为具有给定字节数的新字符串 String truncatedValue String currentValue string int pivotIndex int Math round dou
  • 我如何用更少的node_modules创建react-app

    我用过create react app
  • RegExp 和 String 组合导致 Chrome 崩溃

    我有以下正则表达式来验证电子邮件地址 A Za z0 9 a zA Z0 9 A Za z0 9 a zA Z0 9 A Za z 2 在基本电子邮件上运行它效果很好 A Za z0 9 a zA Z0 9 A Za z0 9 a zA Z
  • 使用 *args 和 **kwargs [重复]

    这个问题在这里已经有答案了 所以我对这个概念有困难 args and kwargs 到目前为止我了解到 args 参数列表 作为位置参数 kwargs 字典 其键成为单独的关键字参数 值成为这些参数的值 我不明白这对什么编程任务有帮助 Ma
  • 如何同时使用 telegram bot python

    我不知道如何使用 python 在电报中使用机器人进行多进程 我创建了一个线程 但如果该线程未完成 机器人将无法回复消息 horaPurga now replace hour 23 minute 36 second 59 microseco
  • RESTEasy - javax.ws.rs.NotFoundException:找不到完整路径的资源

    我尝试在 GWT 项目中使用 RESTEasy 实现 REST 服务 但是当我进入相应的 URI 时 应用程序返回 Grave failed to execute javax ws rs NotFoundException Could no
  • 不活动后会话自动注销

    快速会话中是否有内置功能 可以在给定的不活动时间后启用自动注销 我如下使用它 并希望它在会话半小时不活动时注销 app use session key sessid secret This is secret resave true sav
  • C#“使用”块

    我有类似下面的代码 这里有人提到 WebClient Stream 和 StreamReader 对象都可以从使用块中受益 两个简单的问题 1 这个小片段在使用块时会是什么样子 我自己做研究没有问题 所以资源链接很好 但只看一个例子会更快更
  • 与具有私有成员函数的类相比,未命名命名空间中的自由函数有什么好处?

    与拥有不带任何参数的私有类成员函数并直接访问成员变量相比 拥有自由函数 在匿名命名空间中并且只能在单个源文件中访问 并将所有变量作为参数发送有什么优势 header class A int myVariable void DoSomethi
  • C# 中的赋值运算符

    据我了解 与 C 不同 在 C 中不可能重写赋值运算符 如果我们想要将类 C 的实例 i1 分配给另一个实例 i2 C 类 则有必要创建一个复制方法 但困境来了 我有一个通用的 T 类 public class Node
  • 如何选择 div 内的图像来更改其来源?

    我有以下 div 并且我知道该 DIV 的选择器 Id div class event img src Content Images Icons calendar16 png Event Name div 但我不知道 图像是什么 我需要一些
  • 是否有可能在 Swift 中创建一个仅限于一个类的数组扩展?

    我可以制作一个仅适用于字符串等的数组扩展吗 从 Swift 2 开始 现在可以通过以下方式实现协议扩展 为符合类型提供方法和属性实现 可选地受到附加约束的限制 一个简单的例子 为所有符合的类型定义一个方法 到SequenceType 例如A
  • Hive 中的 ParseException

    我正在尝试使用UDF在蜂巢中 但是当我尝试使用创建临时函数时userdate as unixtimeToDate 我得到这个异常 hive gt create temporary function userdate1 as unixtime
  • Mod_rewrite:在特定页面上强制使用 SSL。在非安全页面上添加 www

    我知道这是一个常见的话题 但我已尽最大努力借助在网上搜索到的解决方案来解决它 我们有一个链接到子域 secure mysite com 的证书 我们希望实现以下目标 我们需要在以下路径及其子页面上强制使用 SSL http mysite c
  • .NET 字符串操作区分大小写吗?

    NET 字符串函数是这样的吗IndexOf blah 区分大小写 据我所知 它们不是 但出于某种原因 我在我的应用程序中看到了错误 其中查询字符串中的文本采用驼峰式大小写 如 UserID 并且我正在测试IndexOf userid 是的
  • JavaScript 中的 Char 数组到 Int32

    我有一个 char 数组 data 和一个 Int32 dictIdFrame 我希望 dictIdFrame 采用 data i i 3 的 ASCII 0 255 值 我的意思是四个字节变成一个 int32 其中 data i 是不太重
  • android.util.Log 中的错误或功能? - Log.isLoggable(DEBUG) = false 但 Log.d() 未禁用

    更新 重新制定问题和标题 我一直认为昂贵的 android 日志记录方法可以通过询问日志记录是否像这样活跃来优化 import android util Log if Log isLoggable MyContext Log DEBUG L