尽管在某些教程中,例如此处( 参数化日志记录
部分),他说Logback消息{}
参数化可以帮助我们避免 在日志数据中进行不必要的计算 (如果日志记录级别不是DEBUG):
logger.debug("The bonus for employee {} is {}",
employee.getName(), employeeService.calculateBonus(employee));
我测试(的logback上的版本1.2.3
),这个优化仅适用于不必要的toString()
参数对象的-
因为这作品的 log4j的 。
Logback
文档未涵盖此详细信息。
因此,我们必须对所有“昂贵”的日志记录使用isDebugEnabled(),对吗?
看这里的例子
从2.4开始,已将方法添加到Logger接口以支持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());
}
使用Java 8,可以通过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());
我目前正在开发一个应用程序,它将为不同的目的生成两个不同的日志文件。因为我是log4j2新手,所以无法实现它。这是我的配置文件(log4j2.xml): 我不确定我是否用了正确的方法。下面是我的java方法,它试图使用log4j2进行日志记录 谢谢
我正在调查一个问题,在这个问题上,我们看到了与jooq尝试填充生成的记录类相关的奇怪异常,因为它使用java.sql,所以会出现数据类型错误。结果集::getXXX(int)(基于列索引)以获取数据。 我可以共享的堆栈跟踪部分如下所示: 这肯定是使用错误的列索引导致的列不匹配。 出现这个问题是因为我们在不断发展的模式上使用记录,所以底层表包含记录定义中不可用的列。 请注意,触发此操作的实际代码是:
我正在使用回溯与SpringJdbc模板来记录我的SQL查询。我的配置包含下一行: 但是这个日志只使用通配符查询没有参数列表。 在SO上,我找到了一些如何使用log4j实现参数日志记录的答案。但我不想切换到log4j。 那么,我如何接收带有Logback的JdbcTemplate的参数列表呢? 编辑 实际上,如果重要的话,我正在使用。
[Java Spring]目前,我正在使用MongoTemplate查询数据 > MongoTemplate-- mongoTemplate。查找(查询,实体) 数据库集合-- 数据库集合。查找() 那么我应该用什么最好的方式呢