温馨提示×

温馨提示×

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

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

Logger 能记录什么

发布时间:2026-07-17 13:35:40 来源:亿速云 阅读:95 作者:小樊 栏目:编程语言

Logger(日志记录器)是软件开发中用于记录程序运行状态、事件、错误信息的核心工具,其记录的内容取决于配置、业务需求和场景。下面是 Logger 通常能记录的内容分类及说明:

一、基础信息类

这类信息用于描述日志的“元数据”,几乎所有 Logger 都会包含:

  • 时间戳(Timestamp):日志产生的时间(如 2024-05-20 14:30:00.123),用于定位事件发生的时间点。
  • 日志级别(Level):标识日志的重要程度,常见级别(从低到高):
    • DEBUG:调试细节(如变量值、方法参数),仅开发/测试环境启用。
    • INFO:常规运行信息(如服务启动、任务完成)。
    • WARN:潜在问题(如配置缺失、性能瓶颈预警),不影响核心功能。
    • ERROR:错误事件(如接口调用失败、数据校验不通过),可能导致功能异常。
    • FATAL/CRITICAL:致命错误(如服务崩溃、数据库无法连接),程序可能终止。
  • 日志来源(Source):产生日志的类、方法、文件或模块(如 com.example.UserServiceOrderController.java:45)。
  • 线程/进程信息:如果是多线程/多进程程序,会记录线程 ID(TID)或进程 ID(PID),便于排查并发问题。

二、事件与业务类

记录程序运行中的具体事件或业务逻辑:

  • 用户操作:如“用户 ID=123 登录成功”“用户修改了订单状态为‘已支付’”。
  • 业务流程节点:如“订单创建开始”“支付回调处理完成”“数据同步任务启动/结束”。
  • 外部交互:调用第三方接口的请求(如 API 路径、参数)和响应(如状态码、返回数据);数据库查询的 SQL 语句、执行时间、影响行数。
  • 配置加载:如“加载配置文件 app.yml 成功”“使用默认配置:超时时间=30s”。

三、错误与异常类

用于问题排查,是 Logger 最重要的用途之一:

  • 异常堆栈(Stack Trace):捕获到的异常(如 NullPointerExceptionIOException)的完整堆栈信息,包括异常类型、错误消息、触发方法/行号。
  • 错误上下文:异常发生时的关键变量值(如“用户 ID=456 时,订单金额为 null”)、输入参数(如“请求参数:{id: 789, type: ‘vip’ 不存在}”)。
  • 系统错误:如“磁盘空间不足”“内存溢出(OOM)”“线程池满”“连接池耗尽”。

四、性能与监控类

用于系统优化和监控:

  • 执行时间:方法/接口的耗时(如“查询用户列表耗时 120ms”“数据库查询耗时 50ms”)。
  • 资源使用:内存占用、CPU 使用率、线程数、连接数(部分 Logger 结合监控工具记录)。
  • 流量统计:如“1分钟内接口 getUserInfo 调用 100 次”“缓存命中率 85%”。

五、调试与诊断类

开发/测试阶段用于定位问题:

  • 变量值:关键变量的实时取值(如“当前用户列表大小=5”“缓存 key=order_123 的值为 {…}”)。
  • 分支判断:条件分支的执行情况(如“进入 if (user != null) 分支”“循环执行第 3 次”)。
  • 临时日志:开发时临时添加的调试信息(如“此处 user 对象为:{…}”),发布前通常会移除或降级为 DEBUG

六、安全与审计类

涉及安全合规和审计需求:

  • 敏感操作审计:如“管理员删除了角色 ID=5”“修改了用户权限”。
  • 安全事件:如“登录失败次数过多(IP=192.168.1.1)”“检测到 SQL 注入尝试”“文件访问越权”。
  • 认证/授权:如“用户 Token 过期”“权限校验失败:用户无访问接口 /admin 的权限”。

七、自定义扩展类

根据业务需求自定义记录内容:

  • 业务标识:如“订单 ID=1001”“事务 ID=tx_abc123”(用于关联同一流程的所有日志)。
  • 环境信息:如“环境=生产”“Region=华东”“版本号=v2.1.0”。
  • 自定义标签:如“module=payment”“tag=discount”(便于日志筛选和聚合)。

示例:一条完整的日志可能长这样

2024-05-20 14:30:00.123 [INFO] [thread-1] [com.example.OrderService] - 订单创建成功,订单ID=1001,用户ID=123,金额=299.99,耗时=45ms
2024-05-20 14:30:05.456 [ERROR] [thread-3] [com.example.PaymentClient] - 支付接口调用失败,订单ID=1001,错误信息:连接超时,堆栈:java.net.SocketTimeoutException: Read timed out at ...

注意事项

  • 避免记录敏感信息:如密码、身份证号、银行卡号等(需脱敏,如 身份证号:110***********1234)。
  • 日志级别合理控制:生产环境通常关闭 DEBUG,只保留 INFO 及以上级别,避免日志量过大。
  • 结构化日志:尽量使用 JSON 等结构化格式(如 {"time":"2024-05-20 14:30:00","level":"INFO","orderId":"1001"}),便于日志分析工具(如 ELK、Splunk)解析。

总之,Logger 的记录内容围绕“程序发生了什么、为什么发生、产生了什么影响”展开,帮助开发者监控程序、排查问题、优化性能。

向AI问一下细节

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

AI