在 Java 中记录异常日志,核心目标是:把异常信息完整、准确地记录下来,便于排查问题。下面从常见方式、最佳实践和示例三个层面说明。
不要直接用 System.out.println(e),应使用日志框架:
try {
// 业务逻辑
} catch (Exception e) {
e.printStackTrace(); // 不推荐
}
问题:
private static final Logger log = LoggerFactory.getLogger(OrderService.class);
try {
// 业务代码
} catch (Exception e) {
log.error("订单处理失败", e);
}
✅ 关键点:
Throwable不要只记异常,要记“发生了什么”:
log.error("创建订单失败,userId={}, orderId={}", userId, orderId, e);
❌ 错误:
catch (Exception e) {
log.error("error");
}
✅ 正确:
catch (Exceptione) {
log.error("xxx失败", e);
throw e; // 或封装后抛出
}
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Demo {
private static final Logger log = LoggerFactory.getLogger(Demo.class);
public void test() {
try {
int i = 1 / 0;
} catch (Exception e) {
log.error("计算异常", e);
}
}
}
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
private static final Logger log = LogManager.getLogger();
用法完全一致。
✅ 该做的
❌ 不要做的
e.printStackTrace()e.getMessage()如果你有具体场景(如 Spring、微服务、异步线程),我可以给你更针对性的示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。