当前位置: 首页 > 面试题库 >

是否需要进行if(log.isDebugEnabled()){…}检查?

查飞星
2023-03-14
问题内容

是否需要进行显式的if(log.isDebugEnabled()){…}检查?

我的意思是,我已经看到一些帖子提到log.debug(“something”)进行隐式调用,以查看调试模式日志记录是否已启用,然后再进行日志记录。我是否缺少某些东西,或者在使用此步骤之前有中间步骤要执行?

谢谢!

log.debug("ResultSet rs is retrieved from OracleTypes");

if(log.isDebugEnabled()){
     log.debug("ResultSet rs is retrieved from OracleTypes");
}

编辑:在上面写过:http : //java.sg/whether-to-do-a-isdebugenabled-
checking-before-printing-out-your-log-statement/


问题答案:

声明

if(log.isDebugEnabled()){

仅出于性能原因使用。它的使用是可选的,因为它是由log方法在内部调用的。

但是现在您问是否在内部进行此检查,那么为什么要使用它呢?这很简单:如果您记录如下内容:

log.debug("ResultSet rs is retrieved from OracleTypes");

然后,您无需进行任何检查。如果您使用如下所示的附加运算符(+)编写要记录的字符串:

log.debug("[" + System.getTimeInMillis() + "] ResultSet rs is retrieved from OracleTypes");

在这种情况下,您应该检查是否启用了日志,因为如果没有启用日志,即使没有创建日志,字符串组成也是启用的。而且我必须提醒您,使用运算符“+”来连接字符串是非常低效的。



 类似资料:
  • 问题内容: 下面的对象有一个嵌套对象 我应该如何在减速器中处理它? 我可以如上所述做吗?我只是将整个对象分配给它而不进行复制? 要么 还是应该对对象进行深层复制并将其分配给?谢谢 问题答案: 处理嵌套数据更新的“正确”方法是使用多个浅表副本,每个浅层副本一个。按照您的第一个示例,完全可以完全替换一个字段的新对象当然也可以。 有关如何正确执行不可变更新的一些信息,请参阅不可变更新模式的Redux文档

  • 关于使用NewSingleThreadExecutor清理executor服务,我有一点困惑。根据它的实现,它在内部创建一个线程池,如果失败,将创建一个新的线程池。我使用singleThreadExecutor,因为我想按顺序运行在运行时创建的任务。所以我关心的是,当系统中没有更多的任务时,我需要关闭这个executor服务吗? 我读到ExecutorService内部的活动线程防止JVM关闭。由

  • 我有一个函数来获取服务长度,我需要执行一个if语句来检查空日期,我是否能够使用术语if@dateleftorg=='1900-01-01 00:00:00.000'我需要做的是,如果@dateleftorg为空,则使用GETDATE(),否则我使用@dateleftorg中的值

  • 随着新的工具栏小部件的引入和AppCompat(android.support.v7.widget.Toolbar)版本的推出,是否还需要调用setSupportActionbar(工具栏)?或者调用setSupportActionbar有什么好处吗;现在我们可以设置标题、子标题、导航图标、导航图标单击侦听器(getSupportActionBar()。直接在工具栏上设置DisplayHomeAs

  • 问题内容: 作为构建穷人看门狗并确保应用程序崩溃的一种方法(直到我弄清原因),我需要编写一个PHP CLI脚本,该脚本将由cron每5百万次运行一次,以检查该进程仍在运行。 基于此页面,我尝试了以下代码,但是即使我使用虚假数据对其进行调用,它也始终返回True: 接下来,我尝试了这段代码 … …但是没有达到我的期望: FWIW,此脚本与PHP 5.2.5的CLI版本一起运行,并且操作系统为uCli