SLF4J打印日志 logger.error用法

本文详细讲解了如何使用SLF4J正确打印日志信息,包括普通信息及异常情况下的日志记录方法。文章指出,在打印普通信息时可以使用占位符{}

 

使用SLF4J打印日志,它有一个占位符(place holder){},一般不是异常的是这样打印的:

  1. logger.info("InvestmentFacadeImpl queryInvestmentInfo: investmentListResponse is {}", investmentListResponse);  

{} 就是一个占位符,那么打印出来的结果就是

  1. InvestmentFacadeImpl queryInvestmentInfo: investmentListResponse is ********  

如果是异常,那么该怎么打印呢?

一个错误的示范:

  1. logger.error("CrowdFundingAssetServiceImpl insert throws exception is {}", e.getMessage());  

其实我们可以去看一下error() 方法的源码,就知道正确的打印方式了:

  1. /**  
  2.   * Log an exception (throwable) at the ERROR level with an  
  3.   * accompanying message.  
  4.   *  
  5.   * @param msg the message accompanying the exception  
  6.   * @param t   the exception (throwable) to log  
  7.   */  
  8.  public void error(String msg, Throwable t);  

对于异常,是不需要占位符的,而且也不需要e.getMessage(),直接打印出来即可

  1. logger.error("FinancingManualFacadeImpl.addFinancingProduct failed! ", e);  
[2025-09-15 10:25:23.415] INFO bap.ec.generator.BAPGenerateServiceImpl [] - [ERROR] /home/local/data/generate/PM_7.6.0.1/service/src/main/custom/com/supcon/orchid/PMCustom/services/impl/CustomPMBurdenTaskServiceImpl.java:[886,28] no suitable method found for error(java.lang.String,java.lang.Long,java.lang.Integer,java.lang.Integer,java.lang.Integer) [2025-09-15 10:25:23.415] INFO bap.ec.generator.BAPGenerateServiceImpl [] - method org.slf4j.Logger.error(java.lang.String) is not applicable [2025-09-15 10:25:23.415] INFO bap.ec.generator.BAPGenerateServiceImpl [] - (actual and formal argument lists differ in length) [2025-09-15 10:25:23.415] INFO bap.ec.generator.BAPGenerateServiceImpl [] - method org.slf4j.Logger.error(java.lang.String,java.lang.Object) is not applicable [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - (actual and formal argument lists differ in length) [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - method org.slf4j.Logger.error(java.lang.String,java.lang.Object,java.lang.Object) is not applicable [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - (actual and formal argument lists differ in length) [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - method org.slf4j.Logger.error(java.lang.String,java.lang.Object[]) is not applicable [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - (actual and formal argument lists differ in length) [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - method org.slf4j.Logger.error(java.lang.String,java.lang.Throwable) is not applicable [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - (actual and formal argument lists differ in length) [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - method org.slf4j.Logger.error(org.slf4j.Marker,java.lang.String) is not applicable [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - (actual and formal argument lists differ in length) [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - method org.slf4j.Logger.error(org.slf4j.Marker,java.lang.String,java.lang.Object) is not applicable [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - (actual and formal argument lists differ in length) [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - method org.slf4j.Logger.error(org.slf4j.Marker,java.lang.String,java.lang.Object,java.lang.Object) is not applicable [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - (actual and formal argument lists differ in length) [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - method org.slf4j.Logger.error(org.slf4j.Marker,java.lang.String,java.lang.Object[]) is not applicable [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - (actual and formal argument lists differ in length) [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - method org.slf4j.Logger.error(org.slf4j.Marker,java.lang.String,java.lang.Throwable) is not applicable [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - (actual and formal argument lists differ in length) [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - [ERROR] /home/local/data/generate/PM_7.6.0.1/service/src/main/custom/com/supcon/orchid/PMCustom/services/impl/CustomPMBurdenTaskServiceImpl.java:[914,28] no suitable method found for error(java.lang.String,java.lang.Long,java.lang.Integer,java.lang.Integer,java.lang.Integer) [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - method org.slf4j.Logger.error(java.lang.String) is not applicable [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - (actual and formal argument lists differ in length) [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - method org.slf4j.Logger.error(java.lang.String,java.lang.Object) is not applicable [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - (actual and formal argument lists differ in length) [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - method org.slf4j.Logger.error(java.lang.String,java.lang.Object,java.lang.Object) is not applicable [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - (actual and formal argument lists differ in length) [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - method org.slf4j.Logger.error(java.lang.String,java.lang.Object[]) is not applicable [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - (actual and formal argument lists differ in length) [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - method org.slf4j.Logger.error(java.lang.String,java.lang.Throwable) is not applicable [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - (actual and formal argument lists differ in length) [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - method org.slf4j.Logger.error(org.slf4j.Marker,java.lang.String) is not applicable [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - (actual and formal argument lists differ in length) [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - method org.slf4j.Logger.error(org.slf4j.Marker,java.lang.String,java.lang.Object) is not applicable [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - (actual and formal argument lists differ in length) [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - method org.slf4j.Logger.error(org.slf4j.Marker,java.lang.String,java.lang.Object,java.lang.Object) is not applicable [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - (actual and formal argument lists differ in length) [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - method org.slf4j.Logger.error(org.slf4j.Marker,java.lang.String,java.lang.Object[]) is not applicable [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - (actual and formal argument lists differ in length) [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - method org.slf4j.Logger.error(org.slf4j.Marker,java.lang.String,java.lang.Throwable) is not applicable [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - (actual and formal argument lists differ in length) [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - [ERROR] /home/local/data/generate/PM_7.6.0.1/service/src/main/custom/com/supcon/orchid/PMCustom/services/impl/CustomPMBurdenForPDAServiceImpl.java:[826,12] no suitable method found for error(java.lang.String,java.lang.Long,java.lang.Long,java.lang.String,java.lang.String,java.lang.String) [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - method org.slf4j.Logger.error(java.lang.String) is not applicable [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - (actual and formal argument lists differ in length) [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - method org.slf4j.Logger.error(java.lang.String,java.lang.Object) is not applicable [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - (actual and formal argument lists differ in length) [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - method org.slf4j.Logger.error(java.lang.String,java.lang.Object,java.lang.Object) is not applicable [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - (actual and formal argument lists differ in length) [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - method org.slf4j.Logger.error(java.lang.String,java.lang.Object[]) is not applicable [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - (actual and formal argument lists differ in length) [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - method org.slf4j.Logger.error(java.lang.String,java.lang.Throwable) is not applicable [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - (actual and formal argument lists differ in length) [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - method org.slf4j.Logger.error(org.slf4j.Marker,java.lang.String) is not applicable [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - (actual and formal argument lists differ in length) [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - method org.slf4j.Logger.error(org.slf4j.Marker,java.lang.String,java.lang.Object) is not applicable [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - (actual and formal argument lists differ in length) [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - method org.slf4j.Logger.error(org.slf4j.Marker,java.lang.String,java.lang.Object,java.lang.Object) is not applicable [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - (actual and formal argument lists differ in length) [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - method org.slf4j.Logger.error(org.slf4j.Marker,java.lang.String,java.lang.Object[]) is not applicable [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - (actual and formal argument lists differ in length) [2025-09-15 10:25:23.416] INFO bap.ec.generator.BAPGenerateServiceImpl [] - method org.slf4j.Logger.error(org.slf4j.Marker,java.lang.String,java.lang.Throwable) is not applicable [2025-09-15 10:25:23.417] INFO bap.ec.generator.BAPGenerateServiceImpl [] - (actual and formal argument lists differ in length) [2025-09-15 10:25:23.417] INFO bap.ec.generator.BAPGenerateServiceImpl [] - [INFO] 3 errors [2025-09-15 10:25:23.417] INFO bap.ec.generator.BAPGenerateServiceImpl [] - [INFO] ------------------------------------------------------------- [2025-09-15 10:25:23.417] INFO bap.ec.generator.BAPGenerateServiceImpl [] - [INFO] ------------------------------------------------------------------------
09-16
从你提供的日志信息来看,这是一个 **Java 编译错误**,发生在使用 SLF4J(Simple Logging Facade for Java)的日志记录过程中。错误信息如下: ``` no suitable method found for error(java.lang.String, java.lang.Long, java.lang.Integer, java.lang.Integer, java.lang.Integer) ``` ### 错误原因分析: 这段错误表明你尝试调用 `Logger.error()` 方法时传入了 **不匹配的参数类型和数量**。 SLF4J 的 `error()` 方法支持以下几种形式: ```java void error(String format); void error(String format, Object arg); void error(String format, Object arg1, Object arg2); void error(String format, Object... arguments); void error(String format, Throwable t); void error(Marker marker, String format, ...); // 带 Marker 的重载 ``` 但你传入的是: ```java error(String, Long, Integer, Integer, Integer) ``` 这与 SLF4J 的任何 `error()` 方法签名都不匹配,所以编译器报错。 --- ### 解决方案: 你需要将这些参数转换为 **Object 类型** 或使用 **可变参数形式**(`Object...`),因为 SLF4J 支持格式化字符串和可变参数。 #### ✅ 正确用法示例: ```java Long someLong = 100L; Integer someInt1 = 1; Integer someInt2 = 2; Integer someInt3 = 3; logger.error("Some message: {}, {}, {}, {}", someLong, someInt1, someInt2, someInt3); ``` 或者,如果你希望传入 `Object[]`: ```java Object[] args = new Object[] { someLong, someInt1, someInt2, someInt3 }; logger.error("Some message: {}, {}, {}, {}", args); ``` --- ### 示例代码: ```java import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class Example { private static final Logger logger = LoggerFactory.getLogger(Example.class); public void logError() { Long id = 123L; Integer count = 5; Integer value1 = 10; Integer value2 = 20; // 正确使用 SLF4Jerror 方法 logger.error("ID: {}, Count: {}, Value1: {}, Value2: {}", id, count, value1, value2); } } ``` --- ### 说明: - `{}` 是占位符,对应后面的参数。 - SLF4J 会自动将后面的参数依次替换到字符串中。 - 所有参数都会被自动装箱为 `Object`,所以 `Long`、`Integer` 等都可以直接使用。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值