Logger 怎么打印变量
如果你指的是 Java 的 Logger(如 java.util.logging.Logger、SLF4J、Log4j2 等),常见打印变量的方式如下:
一、使用占位符(✅ 推荐,最常用)
1️⃣ SLF4J / Logback / Log4j2
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Logger logger = LoggerFactory.getLogger(Test.class);
int age = 18;
String name = "Tom";
logger.info("name = {}, age = {}", name, age);
✅ 优点:
- 性能好(不会提前拼接字符串)
- 可读性强
- 最推荐
2️⃣ Log4j2(同样支持占位符)
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
Logger logger = LogManager.getLogger(Test.class);
logger.info("name = {}, age = {}", name, age);
二、字符串拼接(不推荐)
logger.info("name = " + name + ", age = " + age);
❌ 缺点:
- 如果日志级别不够,字符串仍然会拼接
- 性能差
- 可读性一般
三、java.util.logging(原生 Logger)
import java.util.logging.Logger;
Logger logger = Logger.getLogger(Test.class.getName());
logger.info("name = " + name + ", age = " + age);
⚠️ 原生 Logger 不支持占位符 {}
四、打印对象 / JSON(调试常用)
User user = new User("Tom", 18);
logger.info("user = {}", user);
或使用 JSON:
logger.info("user = {}", objectMapper.writeValueAsString(user));
五、打印异常 + 变量
try {
int i = 1 / 0;
} catch (Exception e) {
logger.error("error occurred, name = {}, age = {}", name, age, e);
}
六、总结对照表
| 方式 | 是否推荐 | 说明 |
|---|---|---|
{} 占位符 |
✅✅✅ | 最推荐 |
| 字符串拼接 | ❌ | 性能差 |
| 原生 Logger | ⚠️ | 不支持占位符 |
| 打印对象 | ✅ | 方便调试 |
| 打印异常 | ✅ | 必须加异常参数 |
如果你用的是 某一具体 Logger(如 Log4j2、Logback、Lombok @Slf4j),可以告诉我,我可以给你更精准的示例。