LogTimeline AI —— 日志时间戳模糊查询器
August 15, 2026 · View on GitHub
输入一句自然语言时间描述(如「昨天下午」「3 小时前」「凌晨 12 点」),自动解析成时间范围、扫描本地日志、输出排查结论。查询意图(如「服务器为什么崩了」)可用
--since兜底或配合--no-llm离线统计使用。
面向运维与调试场景的本地日志排查工具:中文自然语言 → 时间范围 → 日志过滤 → 归因结论。全程本地运行,隐私可控。
功能特性
| 能力 | 说明 |
|---|---|
| 自然语言时间解析 | 「昨天下午」「3 小时前」「凌晨 12 点」「上周三 14:00-15:00」等中文表达 → 精确时间范围 |
| 多格式日志兼容 | 常见时间戳格式自动识别、编码 auto(UTF-8/GBK 回退)、流式过滤不占内存 |
| 双模式归因 | 离线统计(--no-llm,断网可用)或 LLM 归因(默认,失败自动降级离线) |
| 零数据出本机 | 离线模式日志完全本地;LLM 模式仅发送 ≤2KB token 的窗口样本 |
| 三种界面 | CLI、Web UI(webui,零第三方依赖)、JSON 输出(供脚本/管道消费) |
快速开始
# 安装(httpx / rich 自动装)
pip install -e .
# 离线快速排查(不调用任何外部服务)
lq "昨天下午" --files demo.log --no-llm
# 完整归因(需 LLM 环境变量;查询意图配合时间描述)
export LLM_BASE_URL=https://api.deepseek.com/v1
export LLM_API_KEY=sk-xxxx
export LLM_MODEL=deepseek-chat
lq "昨天下午" --files demo.log --since 2026-08-14T13:00:00+08:00 # 时间词 + 意图由 LLM 归因给出
# 启动 Web UI(默认 127.0.0.1:8765)
webui
命令参考
| 参数 | 说明 |
|---|---|
--files f1 f2 ... | 指定日志文件 |
--dir d [--pattern *.log] | 递归扫描目录 |
--journalctl [--service s] | 读取 systemd 日志(仅 Linux) |
--max-lines N | 返回行数上限(默认 500,0 = 只统计) |
--since RFC3339 | 时间解析失败时的绝对时间兜底 |
--no-llm / --dry-run / --json | 离线统计 / 只解析 / 机器可读输出 |
退出码:0 成功 · 1 参数错误 · 2 无匹配文件/0 行命中 · 3 LLM 归因失败(统计仍输出)。
项目结构
lq.py CLI 入口(参数解析、退出码)
time_parser.py 中文自然语言 → 时间范围(纯函数)
log_filter.py 多文件流式过滤 + 级别统计
llm_summary.py LLM 归因 / 离线统计(外部调用唯一出口)
webui.py 零依赖 Web 前端(内嵌 HTML/JS/CSS)
config.py 环境变量配置
tests/ pytest 测试(124 例,不触网)
测试
python -m pytest tests/ -q
隐私与免责
--no-llm/--dry-run完全本地;默认模式会把时间窗口内的日志样本(≤2KB token 量级)发送到你配置的LLM_BASE_URL,启动时明确提示发送行数与目标地址。- 本工具仅做只读分析,不修改任何日志文件;LLM 归因结论仅供参考,请结合原始日志人工复核。
本项目仅供学习交流与演示用途,不构成任何形式的商业服务或技术承诺。软件按「现状」提供,不作任何明示或暗示的保证,包括但不限于适销性、特定用途适用性与非侵权性。 您理解并同意:使用本项目即表示您自行承担全部风险。如您在使用过程中发现缺陷或问题,欢迎通过 GitHub Issues 反馈,但作者不因使用本软件所直接或间接产生的任何损失(包括但不限于数据丢失、业务中断、第三方索赔)承担责任。 本项目以功能演示与学习交流为主要目的,其架构设计、安全基线、容错机制与性能表现均未按生产级标准进行验证与加固,不适用于实际生产环境或关键业务场景。任何将本项目部署于生产系统、对外提供服务、或将其接入真实业务工作流的做法,均属使用者的自主决策行为;由此产生的任何直接或间接不良后果,包括但不限于服务中断、数据损坏或泄露、业务损失、合规风险、以及因依赖本软件而引发的第三方纠纷,开发者均不承担任何责任。若您确有生产级使用需求,请在充分评估与自行加固(包括但不限于安全审计、压力测试、代码审查)后,自行承担相应风险。
License
GPL-3.0 — Copyright (C) 2026 anyuer678