温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java Logger 怎么定位错

发布时间:2026-10-23 16:09:41 来源:亿速云 阅读:83 作者:小樊 栏目:编程语言

在 Java 中使用 Logger(通常指 java.util.logging.Logger 或如 Log4j / Logback)“定位错”,一般可以从下面几个层面来做:


一、明确“定位错”是什么意思

通常有几种情况:

  1. 日志没有打印出来
  2. 日志打印了,但找不到是哪一行代码
  3. 异常信息不完整,无法定位问题
  4. 日志级别不对,看不到错误

下面分别说明。


二、基础:使用 Logger 打印错误

1️⃣ java.util.logging 示例

import java.util.logging.Logger;

public class Demo {
    private static final Logger logger = Logger.getLogger(Demo.class.getName());

    public static void main(String[] args) {
        try {
            int i = 1 / 0;
        } catch (Exception e) {
            logger.severe("发生错误:" + e.getMessage());
            e.printStackTrace(); // 控制台能看到完整堆栈
        }
    }
}

⚠️ 问题:Logger 默认 不会打印异常堆栈

✅ 正确方式(打印堆栈)

logger.log(java.util.logging.Level.SEVERE, "发生错误", e);

三、关键:打印异常堆栈(最重要)

✅ java.util.logging

logger.log(Level.SEVERE, "业务处理失败", e);

✅ Log4j / Logback(更常用)

log.error("业务处理失败", e);

❌ 错误写法(丢失堆栈):

log.error("错误:" + e.getMessage());

四、如何快速“定位到代码行”

1️⃣ 使用异常堆栈

异常堆栈会显示:

com.xxx.Demo.main(Demo.java:12)

➡ 直接定位到第 12 行

2️⃣ 在日志中打印类名和方法名

logger.severe(
    Demo.class.getName() + "#main 发生错误"
);

或:

new Throwable().getStackTrace()[1].getMethodName();

五、日志级别(很多人“看不到错”的原因)

java.util.logging 级别

SEVERE > WARNING > INFO > CONFIG > FINE

如果 Handler 级别是 INFO,SEVERE 才会显示

设置级别

logger.setLevel(Level.ALL);

六、Log4j / Logback 推荐配置(更好定位)

logback.xml

<logger name="com.xxx" level="DEBUG"/>

日志格式(关键)

%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n

输出示例:

2026-01-15 10:00:00 [main] ERROR com.xxx.Demo - 业务失败

七、常见“定位不到错”的原因总结

❌ 只打印 e.getMessage()
❌ 使用 System.out.println
❌ 日志级别太高
❌ 异常被吞掉(catch 后不处理)
❌ 多线程看不到线程名


八、最佳实践(建议你直接照做)

✅ 永远 log.error("描述", e)
✅ 日志包含:谁、在哪、做了什么、为什么错
✅ 生产环境用 Logback / Log4j2
✅ 异常不要吞


如果你愿意,可以告诉我:

  • 用的是 java.util.logging / Log4j / Logback
  • 是 看不到日志 / 看不到堆栈 / 多线程问题

我可以给你针对性配置和示例代码。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手