当前位置: 首页 > 知识库问答 >
问题:

在记录带有logback的计算数据时,我们是否应该使用isDebugEnabled()?

权黎昕
2023-03-14
logger.debug("The bonus for employee {} is {}", 
   employee.getName(), employeeService.calculateBonus(employee));

共有1个答案

何兴学
2023-03-14

看一下这里的示例

从2.4开始,记录器接口中添加了方法以支持lambda表达式。新方法允许客户端代码不显式检查请求的日志级别是否已启用而懒洋洋地记录消息。例如,以前可以这样写:

// pre-Java 8 style optimization: explicitly check the log level
// to make sure the expensiveOperation() method is only called if necessary
 if (logger.isTraceEnabled()) {
     logger.trace("Some long-running operation returned {}", expensiveOperation());
 }

在Java8中,使用lambda表达式也可以达到同样的效果:

// Java-8 style optimization: no need to explicitly check the log level:
// the lambda expression is not evaluated if the TRACE level is not enabled
logger.trace("Some long-running operation returned {}", () -> expensiveOperation());
 类似资料:
  • 问题内容: 尽管在某些教程中,例如此处( 参数化日志记录 部分),他说Logback消息参数化可以帮助我们避免 在日志数据中进行不必要的计算 (如果日志记录级别不是DEBUG): 我测试(的logback上的版本),这个优化仅适用于不必要的参数对象的- 因为这作品的 log4j的 。 Logback 文档未涵盖此详细信息。 因此,我们必须对所有“昂贵”的日志记录使用isDebugEnabled()

  • 我目前正在开发一个应用程序,它将为不同的目的生成两个不同的日志文件。因为我是log4j2新手,所以无法实现它。这是我的配置文件(log4j2.xml): 我不确定我是否用了正确的方法。下面是我的java方法,它试图使用log4j2进行日志记录 谢谢

  • 我正在调查一个问题,在这个问题上,我们看到了与jooq尝试填充生成的记录类相关的奇怪异常,因为它使用java.sql,所以会出现数据类型错误。结果集::getXXX(int)(基于列索引)以获取数据。 我可以共享的堆栈跟踪部分如下所示: 这肯定是使用错误的列索引导致的列不匹配。 出现这个问题是因为我们在不断发展的模式上使用记录,所以底层表包含记录定义中不可用的列。 请注意,触发此操作的实际代码是:

  • 这是在创建持久订阅的上下文中。 DefaultMessageListenerContainer中有一个setClientId(),SingleConnectionFactory中有一个。 我的理解是: < li >长期订阅适用于消费者/订户。 < li >不同的消费者应该能够使用不同的客户端id。 < li >不同的消费者应该能够共享一个连接。 < li >每个使用者有一个(ListenerCon

  • 哈希集由哈希映射支持。从它的JavaDoc: 这个类实现了Set接口,由哈希表(实际上是一个HashMap实例)支持 在查看源时,我们还可以看到它们之间的关系: 因此,一个<code>哈希集 使用而不是,不是更有效吗?进一步考虑的是,如果环境允许使用而不是,我们是否应该完全放弃,直接使用。 触发这些想法的基本问题是以下情况:我有一组具有以下属性的对象: 大型对象集合 如何有效地检查集装箱? 我想到