温馨提示×

温馨提示×

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

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

日志如何记录异常

发布时间:2026-10-06 15:00:01 来源:亿速云 阅读:85 作者:小樊 栏目:编程语言

日志是排查和定位异常的核心依据,记录异常时有规范的内容、级别、结构和实践方式。下面从“记什么、怎么记、注意事项、示例”几个角度系统说明。


一、异常日志应该记录什么

一条合格的异常日志通常包含以下信息:

  1. 时间(timestamp)

    • 精确到毫秒
    • 示例:2026-01-15 10:23:45.123
  2. 日志级别(level)

    • ERROR / FATAL:异常、崩溃
    • WARN:潜在风险
    • INFO:正常流程(可选)
  3. 异常类型(exception type)

    • 如 NullPointerException、SQLException
  4. 异常消息(message)

    • 原始异常信息
    • 不要只写“出错了”
  5. 堆栈信息(stack trace)

    • 定位代码位置
    • 必须包含完整调用链
  6. 上下文信息(context)

    • 用户ID、请求ID、订单号
    • 接口名、参数(注意脱敏)
    • 环境(prod / test)
  7. 线程信息(可选但推荐)

    • 线程名、线程ID

二、常见日志级别建议

| 级别 | 使用场景 | |----|| | ERROR | 系统异常、接口失败、数据错误 | | WARN | 降级、重试、参数不合法但不致命 | | INFO | 关键流程节点(非异常) | | DEBUG | 开发调试,不进生产 |


三、异常日志记录方式(代码示例)

Java(SLF4J + Logback)

try {
    orderService.createOrder(order);
} catch (BusinessException e) {
    log.error("创建订单失败, orderId={}, userId={}", 
              order.getId(), userId, e);
}

✅ 正确做法:

  • 使用占位符
  • 把异常对象 e 作为最后参数
  • 不吞异常、不重复打

❌ 错误做法:

log.error("出错了");
log.error(e.getMessage()); // 丢失堆栈

Python(logging)

import logging
logging.error("查询用户失败 user_id=%s", user_id, exc_info=True)

四、关键最佳实践

1. 必须记录“业务上下文”

只记异常不够,要能复现问题:

ERROR 创建订单失败
orderId=12345
userId=888
traceId=abc-def-ghi

2. 使用 TraceId(链路追踪)

  • 一次请求一个 ID
  • 微服务/分布式系统必备
  • 可用:MDC(Java)、OpenTelemetry

3. 异常不要“吞掉”

try {
   ...
} catch (Exception e) {
   // ❌ 什么都没做
}

4. 避免日志爆炸

  • 不要在循环里打 ERROR
  • 限流、采样(高频异常)

5. 敏感信息脱敏

❌ 不要记录:

  • 密码
  • 身份证
  • 完整手机号

✅ 记录:

  • phone=138****1234

五、一条“标准异常日志”示例

2026-01-15 10:23:45.123 [http-nio-8080-exec-3] ERROR 
c.x.order.service.OrderService - 创建订单失败
traceId=abc123
userId=888
orderId=10001
java.lang.NullPointerException: order.address is null
    at com.x.order.service.OrderService.createOrder(OrderService.java:88)
    at com.x.order.controller.OrderController.create(OrderController.java:45)

六、总结一句话

异常日志 = 时间 + 级别 + 异常 + 堆栈 + 业务上下文

如果你用的是某种具体技术栈(Java / Python / Go / Node / 微服务),我可以给你更针对性的日志规范或模板。

向AI问一下细节

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

AI
助
手