如何通过Journalctl -O short --precise在Linux中查看精确到微秒的业务逻辑耗时记录?
- 内容介绍
- 文章标签
- 相关推荐
本文共计845个文字,预计阅读时间需要4分钟。
bashjournalctl -o short-precise本身体现不支持显示微秒级时间戳,只能精确到微秒(µs)单位,但实际上输出默认只显示到毫秒(ms)。格式是固定的、不可编程扩展的。Linux systemd journal 的日志时间戳底层实际上支持微秒精度(`CLOCK_REALTIME` + `struct timespec`),但 `short-precise` 输出格式仅保留毫秒部分(保留三位小数),截断了后续微秒数字。
要真正获取微秒级精度的业务耗时日志,需从日志生成端 + 查询端协同实现:
✅ 正确做法:在业务代码中主动打点并写入微秒级时间戳
journalctl 只是读取日志,不负责计时。真正的耗时分析必须由业务逻辑自己完成:
- 在关键路径开始前,调用
clock_gettime(CLOCK_MONOTONIC, &ts)获取纳秒级起始时间; - 执行业务逻辑;
- 结束后再次获取时间,计算差值(单位:纳秒或微秒);
- 将耗时(如
duration_us=12487)和上下文(trace_id、func、status 等)作为结构化字段,通过sd_journal_print()或printf写入 journal。
本文共计845个文字,预计阅读时间需要4分钟。
bashjournalctl -o short-precise本身体现不支持显示微秒级时间戳,只能精确到微秒(µs)单位,但实际上输出默认只显示到毫秒(ms)。格式是固定的、不可编程扩展的。Linux systemd journal 的日志时间戳底层实际上支持微秒精度(`CLOCK_REALTIME` + `struct timespec`),但 `short-precise` 输出格式仅保留毫秒部分(保留三位小数),截断了后续微秒数字。
要真正获取微秒级精度的业务耗时日志,需从日志生成端 + 查询端协同实现:
✅ 正确做法:在业务代码中主动打点并写入微秒级时间戳
journalctl 只是读取日志,不负责计时。真正的耗时分析必须由业务逻辑自己完成:
- 在关键路径开始前,调用
clock_gettime(CLOCK_MONOTONIC, &ts)获取纳秒级起始时间; - 执行业务逻辑;
- 结束后再次获取时间,计算差值(单位:纳秒或微秒);
- 将耗时(如
duration_us=12487)和上下文(trace_id、func、status 等)作为结构化字段,通过sd_journal_print()或printf写入 journal。

